有趣的绕过

Author Avatar
Geroge Lee 9月 24, 2016
  • 在其它设备中阅读本文章

最近一直在看绕过,有什么错误的理解欢迎提出

实验吧-因缺思汀的绕过(p神之作)

1、

老思路-Ctrl+u,查看源码。发现source.txt

2、

发现源码

关键部分

判断第一层

if (mysql_num_rows($query) == 1)

mysql_num_rows()函数返回查询结果中行的数目,判断为1,即可绕过

Poc:uname=’or 1 limit 1#

第二层

if($key['pwd'] == $_POST['pwd']) {
        print "CTF{XXXXXX}";
    }else{
        print "亦可赛艇!";

这里需要 group by with rollup (对分组后的结果进行汇总)

经过不断的测试发现库里的表大概是下面这个样子

发现表只有三条数据,那这样就能绕过得到flag了

Poc:uname=’or 1 group by pwd with rollup limit 1 OFFSET 2#

注:pwd参数不需要提交,弱类型判断NULL和空字符串相等

常见的mysql特性注入绕过

1、利用大小写

在mysql数据库中,你是看不到大写字符的。填写表单的时候,填入ADMIN,插入到数据库中的是admin,这样也是一种绕过

2、利用容量大小

在注册用户名的时候,利用函数定义插入数据库长度限制,输入大于规定长度的字符串,就会造成表的覆盖