当前位置: 首页 > news >正文

sql注入工具升级:自动化时间盲注、布尔盲注

项目地址:https://github.com/iamnotamaster/sql-injecter

给我之前写的sql注入脚本进行了一些升级,此文章就是对升级内容的分析,升级内容如下:

  • 使用占位符foo来填充payload里需要经常修改的部分

  • 自动判断循环

  • 支持爆破和二分查找法来枚举一个字符

  • 显示枚举一个字符所需要的时间和数据包的数量

  • 二分查找的优点和缺点

使用占位符foo来填充payload里需要经常修改的部分

payload不在使用拼接的方式来替换其需要修改的字符,而是通过占位符foo的方式替换字符。

首先要定义一个payload_foo
​
payload_foo = "1' and substr(str_foo,int_foo,1)='char_foo' and '1'='1"
str_foo = "database()"
​
str_foo是用户输入的内容,如:database()
int_foo是程序需要从1开始循环遍历字符串的数字,不需要用户输入
char_foo是程序需要遍历的字符,不需要用户输入
​
以上内容输入给程序就是枚举出database的内容
自动判断循环
程序根据给定的payload_foo中的占位符foo的数量,判断是否需要嵌套循环
​
例如上面提过的例子,它同时给定了int_foo和char_foo,说明要枚举出一个字符串,需要两个循环语句
​
而以下这个例子,只需要一个循环语句:payload_foo2 = "1' and str_foo=int_foo and '1'='1"
​
给定str_foo = "database()"
payload_foo2的目的是枚举出database()的长度,因此只需要一个循环就能完成任务
支持爆破和二分查找法来枚举一个字符
爆破的话不用多说:
brute_list1 = ", 0123456789abcdefghijklmnopqrstuvwxyz"
一个一个发
​
二分法的布尔注入(整个过程像是猜数字游戏一样):
发送一个payload如下:
1' and int_foo>str_foo and '1'='1
​
给定str_foo = "length(database())"
程序会随机猜一个数字guess替换占位符int_foo
目标如果显示出期待的字符串,说明guess > target,然后程序不断判断并缩小guess的范围,直到找到正确答案
显示枚举一个字符所需要的时间和数据包的数量
这个没什么技术含量,但是非常有用
二分查找的优点和缺点
  • 优点:发送的数据包少且稳定,因为数据包少有利于规避

  • 缺点:爆破一个字符耗费的时间更长

我已经测试了时间盲注post的二分查找,和时间盲注post爆破对比如下:

二分查找时间盲注post:

爆破时间盲注post:

可以看到,爆破几乎1s就能爆出一个字符(设置sleep(1)),然而二分查找需要2~4秒
但是二分查找爆出一个字符,只需要5~8个数据包,而爆破最高时能到30个

理论上说,如果目标结果足够大,那么二分查找不论速度还是数据包的数量,都优于爆破


http://www.mrgr.cn/news/38911.html

相关文章:

  • 数通。。。
  • 喵星人都爱吃的福派斯猫粮,究竟是什么魔力让它如此火爆?
  • 储能电站如何提高风电消纳能力
  • Python:Spoonfed - (2-10) 激励选择脚本(搬砖)
  • 低空经济时代:无人机飞行安全要点详解
  • JAVA TCP协议初体验
  • 【C语言从不挂科到高绩点】24-C语言中的枚举【重点知识】
  • 推动国产化软件飞跃:三品软件与麒麟完成兼容性验证 共筑数字强国梦
  • OpenCV视频I/O(10)视频采集类VideoCapture之从视频流中检索一帧图像函数 retrieve()的使用
  • 巴鲁夫rfid读头国产平替版——高频RFID读写器
  • GIL全局解释器锁
  • JAVA学习-练习试用Java实现“单词拆分 II”
  • 联想电脑怎么开启vt_联想电脑开启vt虚拟化教程(附intel和amd主板开启方法)
  • OpenStack-鉴权服务介绍
  • AI人员睡岗识别摄像机
  • 谷歌外链需要持续发吗?
  • 根据minio地址,下载文件流
  • Java应用文件上传超出默认大小
  • 【docker】如何保存镜像以及分享社区
  • 从AI+到+AI:传统行业的智能蜕变