🗒️py07 脚本化sql盲注爆破(任意get请求站点)
2023-11-2
| 2023-11-3
字数 2672阅读时长 7 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
本篇文章首先就sqllib的盲注脚本编写入门 再扩展到pikachu的盲注脚本同逻辑编写 最后总结一套盲注爆破逻辑,通过argparse做到命令行传入url和爆破的参数,任意爆破get请求网站数据库,数据表,字段的效果。

python盲注脚本仅编写(不写入脚本化)

结果展示 + 完整代码如下:
其中,查第几个表和爆第几个字段是由用户输入。
代码中只查库,表,字段。不查数据
notion image
这里挑俩段代码进行解释,其余逻辑类似。
这里判断当前数据库长度。payload作为param传入
success的定义是“are”,页面成功回显的标志时you are in。
如果能找到are,说明我们and后面拼接的语句时正确的,当时的i值就是的数据库长度。并且rerun结束这个循环,返回数据库长度。
如果未找到are,则continue继续执行。通过range递增i值。
q=tablename()获得了表名,global定义为全局是为了在其他函数中应用它。只要这个函数被调用一次,q就成为全局变量。
获取字段数量,通过count()函数来抓取表中的字段数量。
其余的都类似的判断。

修改sqllib的盲注脚本爆破pikachu

 
具体修改:
传入的payload,增加参数submit
修改传入的参数为name
修改成功标志为your email
修改传入的url为命令行传入
命令:python pikachu_blind.py -u "http://pikachu.com:8601/vul/sqli/sqli_blind_b.php"
notion image

最终版,爆破任意网站的盲注脚本

命令:python test.py -u url --param 参数名
通过用户提供完整的url,和要爆破的参数名,进行爆破。不提供参数名不会爆破。不包含验证漏洞是否存在,只是利用。
 
相比于之前的,成功标志通过页面返回的字节数来判断,就是代码中的get_url_init_len(url)函数
同时就是对参数的处理逻辑调整,可以通过以下小脚本理解:
通过?分割原有的url为inurl和参数俩部分。对参数部分进行正则匹配,匹配用户输入的id值,此处定义为name, 匹配出name=123
最后通过resplace拼接payload与参数,达到name=123' or 1=1{} --+,并将它作为参数传给requests.get(url=url, params=params)
最终代码如下:
 
  • 脚本编程
  • py06 主机存活探测,bash,shell,不同格式ip的处理py08 poc初尝试
    Loading...