现在,我们回到之前,练习脚本支持的布尔盲注(get型)。
布尔盲注的应用场景是查询成功和失败时回显不同,且存在注入点的地方。
这里以Less-8为例:
发现查询成功时,会显示;失败则无回显。
同时发现,payload: ?id=0' or 1=1 --+ 可以查询成功;即此处存在注入点,or可以得到执行。
于是书写脚本:
第二句os....屏蔽了任何error和warning报错;调试时请勿使用,确定脚本可以跑之后再使用。
request是python在web方面特别有用的一个库,后面会我要系统的学习它,再记笔记。
requests.get向指定url发送请求,理论上,这里要通过各种参数使这个包长得几乎和burp里抓到的一样,但这里简化了。
r.text就是返回的包,是brup里“response”里的内容
讲解一下payload:
substr(string string,num start,num length) 将所致字符串从start位开始截取length长度。mysql的字符串起始位为1。
ascii进行ascii码转化。
% (i,mid) 替换 句中的%d %d,也很常见,记住写法就行了
payload的作用是从select出的字符串里一位一位截取字符,然后通过布尔盲注,二分法确定出这个字符是啥;
i控制截取字符在字符串中的位置,mid控制ascii码大小。
这种注入,如果手动操作的话,太麻烦了,所以必须掌握写这种简单脚本。
但是,适当的手动注入,找到注入点,构造出可行的注入payload是非常必要的,在很多时候也是难点;找到payload,再写脚本就挺简单了。
payload放脚本里之前一定手动验证正确性,比如说,这里的payload,把第两个%d都改成1,如果没回显,肯定证明他是错的,因为select出的东西第一个字符的ascii码不可能小于等于1。
最后是快乐的欣赏内容逐渐被爆出来的时间~