SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令
SQL注入
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
开头先回答一些常见的问题,代码后面也有可以进行测试,当然对现在很多做的安全防护的网站效果较低,很多自动化的攻击工具都在黑客纪念优盘里头有。
我爆出的数据库怎么是以“.asp”结尾的?
那是因为数据库别管理员改名了,这时我们需要用迅雷等工具下载才可以,下载完毕后我们需要再把文件名后缀改成“.mdb”。如果用迅雷也下载不了的话那就只能放弃了。因为像这种情况一般是管理员做了防下载处理。
爆出的数据库含有“#”这个特殊符号,导致无法下载怎么办?
可以用“%23”代替“#”,因为“%23”就是“#”的URL编码,就像暴库时用“%5c”代替“\”是一个道理。
打开前提示输入密码
可以用数据库文件破解工具找到密码。
怎么找到弱网址进行暴库?
一般,只要这个文件调用了数据库,而且处于二级目录下,那么它就可以被用来进行暴库攻击,例如:http://www.XXX.net/123/123.asp,通过这个URL大家应该可以看出,并不一定带参数的URl才能暴库,只要他调用了数据库,那么就可以用来暴库!这点大家一定要记住。
通过一下的例子更形象的了解SQL注入:
有一个Login画面,在这个Login画面上有两个文本框分别用来输入用户名和密码,当用户点了登录按钮的时候,会对输入的用户名和密码进行验证。验证的SQL语句如下:
select * from student where username='输入的用户名' and password='输入的密码'
如果能够检索到数据,说明验证通过,否则验证不通过。
如果用户在用户名文本框中输入 ' or '1' = '1' or '1' = '1,则验证的SQL语句变成:
select * from student where username='' or '1' = '1' or '1' = '1' and password=''
如果用户在密码文本框中输入 1' or '1' = '1,则验证的SQL语句变成:
select * from student where username='' and password='1' or '1'='1'
以上两个SQL语句的where条件永远是成立的,所以验证永远是有效的。
花无涯带你走进黑客世界之 注入攻击 (上)
教程在官网www.heikexiehui.com 网盘都有,文字比较枯燥的可以看看书和教程
首先,不一定每台服务器的IIS都返回具体错误提示给客户端,如果程序中加了cint(参数)之类语句的话,SQL注入是不会成功的,但服务器同样会报错,具体提示信息为处理 URL 时服务器上出错。请和系统管理员联络。
其次,部分对SQL注入有一点了解的程序员,认为只要把单引号过滤掉就安全了,这种情况不为少数,如果你用单引号测试,是测不到注入点的
那么,什么样的测试方法才是比较准确呢?答案如下:
① http://www.mytest.com/showdetail.asp?id=49
② http://www.mytest.com/showdetail.asp?id=49 ;and 1=1
③ http://www.mytest.com/showdetail.asp?id=49 ;and 1=2
这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:
可以注入的表现:
① 正常显示(这是必然的,不然就是程序有错误了)
② 正常显示,内容基本与①相同
③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)
不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。
网友评论