日期:2014-05-18  浏览次数:20519 次

关于sql注入攻击的实例,请高手进来看看
有这样一个站的后台管理是输入用户名和密码,我试着在用户名栏输入了一个单引号,提示如下:

Microsoft   JET   Database   Engine   错误   '80040e14 '  

字符串的语法错误   在查询表达式   'login_name= ' ' ' '   中。  

admin/index.asp,行   13  

这是access数据库,而且没有处理单引号,是可以进行注入的。我自己试着弄了一下,目前知道表名是[admin],用户名字段是login_name,密码字段是password.
但没有办法进行下一步获取权限,因为对这方面不是很懂,所以来问一下各位有经验的,谢谢!

(另外:它的密码是通过md5加密存储的。)

(还有,这是我们学校布置的一个小软件测试,不涉及任何违法犯罪行为,呵呵)

------解决方案--------------------
最简单的办法就是在前台写脚本来控制,输入指定种类的字符,不得输入非法字符 。
------解决方案--------------------
1前台通过 js的正责过滤特殊符号
2后台同样过滤特殊符号
3通过sql过滤特殊符号。
4 不让通过url传递参数
------解决方案--------------------
表名,列名都知道了。
这时候从注入点写入
and (select top 1 len(login_name) from [admin])> 1 and ' '= '
and (select top 1 len(login_name) from [admin])> 10 and ' '= '
第一个管理员的用户长度都弄出来。
然后
and ascii(substring(login_name,1,1))> 0
取每一位的 ascii值,必要时候用abs取绝对值,用chr()返回每一位对应的字符,
之后取得webshell权限,再之后想办法提权,开3389之类的,好像是黑客那一套了。
------解决方案--------------------
想得到里面的数据吗?