PHP+MYSQL网站SQL Injection攻防
程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过。其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报错,然后一点一点的修正参数内容,当程序再次运行成功之时,注入也就随之成功了。
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
正常访问时其URL如下: /articles.php?id=123 当黑客想判断是否存在SQL Injection漏洞时,最常用的方式就是在整形ID后面加个单引号: /articles.php?id=123'' 由于我们没有过滤
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
supplied argument is not a valid MySQL result resource in ... 这些信息就足以说明脚本存在漏洞了,我们可以再耍点手段: /articles.php?id=0 union select 1,2,3 之所以select 1,2,3是因为union要求两边的字段数一致,前面是id,title,content三个字段,后面1,2,3也是三个,所以不会报语法错误,还有设置id=0是一条不存在的记录,那么查询的结果就是1,2,3,反映到网页上,原本显示id的地方会显示1,显示title的地方会显示2,显示content的地方会显示3。 至于如何继续利用,还要看magic_quotes_gpc的设置: 当magic_quotes_gpc为off时: /articles.php?id=0 union select 1,2,load_file(''/etc/passwd'') 如此一来,/etc/passwd文件的内容就会显示在原本显示content的地方。 当magic_quotes_gpc为on时: 此时如果直接使用load_file(''/etc/passwd'')就无效了,因为单引号被转义了,但是还有办法: /articles.php?id=0 union select 1,2,load_file(char(47,101,116,99,47,112,97,115,115,119,100)) 其中的数字就是/etc/passwd字符串的ASCII:字符串每个字符循环输出ord(...) 除此以为,还可以使用字符串的十六进制:字符串每个字符循环输出dechex(ord(...)) /articles.php?id=0 union select 1,2,load_file(0x2f6574632f706173737764) 这里仅仅说了数字型参数的几种攻击手段,属于冰山一角,字符串型参数等攻击手段看后面的文档链接。 防守: 网络上有一些类似SQL Injection Firewall的软件可供使用,比如说GreenSQL,如果网站已经开始遭受SQL Injection攻击,那么使用这样的快捷工具往往会救你一命,不过这样的软件在架构上属于一个Proxy的角色,多半会影响网站并发性能,所以在选择与否这个问题上最好视客观条件来 |
||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |