建个大型网站需,有没学做早餐的网站,access做网站,微信网站开发平台项目地址#xff1a;https://github.com/iamnotamaster/sql-injecter
给我之前写的sql注入脚本进行了一些升级#xff0c;此文章就是对升级内容的分析#xff0c;升级内容如下#xff1a; 使用占位符foo来填充payload里需要经常修改的部分 自动判断循环 支持爆破和二分查…项目地址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 11
str_foo database()
str_foo是用户输入的内容如database()
int_foo是程序需要从1开始循环遍历字符串的数字不需要用户输入
char_foo是程序需要遍历的字符不需要用户输入
以上内容输入给程序就是枚举出database的内容 自动判断循环 程序根据给定的payload_foo中的占位符foo的数量判断是否需要嵌套循环
例如上面提过的例子它同时给定了int_foo和char_foo说明要枚举出一个字符串需要两个循环语句
而以下这个例子只需要一个循环语句payload_foo2 1 and str_fooint_foo and 11
给定str_foo database()
payload_foo2的目的是枚举出database()的长度因此只需要一个循环就能完成任务 支持爆破和二分查找法来枚举一个字符 爆破的话不用多说
brute_list1 , 0123456789abcdefghijklmnopqrstuvwxyz
一个一个发
二分法的布尔注入整个过程像是猜数字游戏一样
发送一个payload如下
1 and int_foostr_foo and 11
给定str_foo length(database())
程序会随机猜一个数字guess替换占位符int_foo
目标如果显示出期待的字符串说明guess target然后程序不断判断并缩小guess的范围直到找到正确答案 显示枚举一个字符所需要的时间和数据包的数量 这个没什么技术含量但是非常有用 二分查找的优点和缺点 优点发送的数据包少且稳定因为数据包少有利于规避 缺点爆破一个字符耗费的时间更长
我已经测试了时间盲注post的二分查找和时间盲注post爆破对比如下
二分查找时间盲注post 爆破时间盲注post 可以看到爆破几乎1s就能爆出一个字符设置sleep(1)然而二分查找需要2~4秒 但是二分查找爆出一个字符只需要5~8个数据包而爆破最高时能到30个 理论上说如果目标结果足够大那么二分查找不论速度还是数据包的数量都优于爆破