前天晚上在学校机房,做完作业感到无聊,就打开英语的视听说系统测试漏洞。

差不多最开始用这套在线系统的时候,我就感觉到它漏洞很多了。比如,“姓名”输入框的安全策略就很有问题。我可以输入 <!-- 这样的 HTML 注释符,系统会保存并按原样输出。其他的 HTML 代码大多也可以,只要把双引号改成单引号。举个例子,我喜欢玩 <html style='display:none'> 这样的东东;Chrome 会聪明地修正代码,将这个 style 属性应用在正牌 <html> 标签上,结果整个网页都“消失”了,比前面提到的注释更强大。

前段时间看了《白帽子讲Web安全》,对 SQL 注入也就有了深入细节的了解。想起我在玩“HTML 注入”(XSS 攻击?)的时候,触发过 SQL 语句的报错,我觉得应该试试。

结果还真成了:拼凑了 SQL 语句,实施了可以观察的攻击。虽然过程不是很顺畅,但是还是实现了预期的目的。最后寻找“截断符”(暂且这么叫吧)的时候,差点放弃了,结果最后一个试验的居然成了!后果就是……所有人的姓名都被我修改了,因为我写的忽略 WHERE 部分……

这已经算是实质性的攻击了。吓得我赶紧打开英语班群,向老师认错。还好后来没有谁追究我。都已经不太敢这么玩了。

不过,另一方面讲,也算有了实战经验了呢——第一次成功的 SQL 注入。学了 SQL 注入以后第一波注入就成功了。好幸运,当年我也是刚学了建站就黑了别人的网站,教我建站那个人的网站……