最重要的是思路——一个SQL注入测试的思路整理

版权声明:欢迎批评指正,没有版权,欢迎转载。 https://blog.csdn.net/lchydp1979/article/details/59715840

此文是学习小强老师的《安全测试普及课【内容更新,小强出品】》中在webgoat上做的一个练习的思路整理。

例子是webgoat上的Injection Flaws-Blind String SQL Injection这个例子

首先最重要的一定是看明白需求,对业务的了解远比技术重要得多!

本需求是需要猜出pins表中在cc_number = 4321432143214321时name字段的值,题目说明中提示了name字段的类型。

总体的方法是在sql中写入对name字段每一位字符的ascii码的判断,若判断成立则系统会提示valid。

一上来先不必着急去判断字符的ascii码,对于字符串,首先要确定它的长度,不然怎么知道要判断几个字符呢。

判断长度是在条件中使用char_length函数。长度的确认采用二分法的思想,先根据经验估计一个长度,然后根据判断结果,用二分法逐渐确定。比如我一开始将长度写成<=10,然后逐渐缩小范围,很快就找到了正确的长度。

然后逐个字符判断就可以了。对于第一个字符,使用ascii函数来获取ascii值就可以了;由于ascii函数返回的是字符串首字母的ascii值,对于第二个及之后的字符需要将substring函数和ascii函数配合使用。

判断时有个小技巧,按常理,往往字符串首字母是大写字母,之后的是小写字母。这里可以先只在大写字母里查找第一个字符,在小写字母里查找随后的字符。如果真是这样的,基本可以节约一半时间。虽然这种SQL注入属于盲注,但是有了正确的思路,就可以大大减少盲目的程度。

最后还是要强调一下,这也是小强老师所强调的:我们是安全测试人员,不是黑客,不要拿别人的网站来练习。攻击别人的网站不但要承担法律责任,也违反道德。我在这里也仅仅是记录解决问题的思路,为测试工作服务。我是菜鸟,这里用到的SQL注入知识都是最基础的,没什么技术含量。最重要的是解决问题的思路,这会对我们的测试工作产生决定性的影响。我不会去引导任何有不良意图的人,任何打歪主意的人也都与本人无关。各位技术大牛们,如果真的对黑别人网站有兴趣,就做个红帽子,把境外那些反华网站全端了吧!

展开阅读全文

没有更多推荐了,返回首页