web漏洞之sql注入漏洞
今天我们来讲一下实战操作验证SQL注入漏洞的方法,以下的操作实例都是通过漏洞扫描系统,扫描出存在相应漏洞的站点URL,由于系统存在一些误报,所以必须经过人工验证,才能确定漏洞的确存在。
特殊符号验证
这种方法是最简单的一种验证方法,特殊符号包括单引号“ ‘ ”,双引号“ “ ”,反斜杠“/”,单书名号“<>”等,这些符号都是在编程语言中用来闭合语句的,只有闭合了之前的语句,我们才能开始其他的语句,从而按照我们的意图来执行并返回我们想要的结果,就比如我们今天要验证的SQL注入语句,就是在闭合之前的语句之后,直接开始插入SQL语句,SQL语句是可以查询、修改、删除及备份数据库信息的,能够插入SQL语句并执行说明我们可以操作数据库信息,是非常危险的,一下就是我们输入一些特殊符号站点服务器所给出的反馈,URL:http://www.*******.gov.cn/e/action/ListInfo/index.phppage=09‘&classid=255&totalnum=79

虽然没有特别敏感的信息泄漏,但是特殊字符的作用已经达到,就是告诉你这里SQL语句可以执行,就是你的输入是存下问题的,如果换成正确的输入,就会得到想要的结果。
用sqlmap工具验证
sqlmap是目前我认为最好的一款SQL注入利用工具,多用于存在SQL注入漏洞的站点的攻击,只用于SQL注入漏洞验证有点大材小用,但是也未尝不可,最常用的验证方式为URL验证,用到的参数为“-u”后边跟存在漏洞的URL,例如:http://www.******.com/tv/hbws/nzjjj/2020-02-17/OThMTKp7XczGLuqh.html?content=&app_login=no&submit=%E6%8F%90+%E4%BA%A4,用sqlmap不加任何参数验证会返回以下信息:

包括存在SQL注入的类型为GET型,参数为app_login,注入类型为基于布尔的盲注,还有payload,以及站点数据库类型为IBM DB2,反馈出类似信息说明漏洞的确存在,可以加参数进一步利用。
另外一种利用方法用到的参数为“-r”,它可以验证POST类型的SQL注入,但是要用抓包工具抓取到相应的数据包,将数据包存储到指定文件(一般为.txt文件),然后用sqlmap的“-r”参数跟上文件位置地址,回车就可以验证了,例如:sqlmap -r C:\Python27\sqlmap\txt\post.txt,反馈如下:

包括存在SQL注入的类型为POST型,参数为keywords,注入类型为基于错误的注入,还有payload,以及web服务为thinkPHP Apache,站点数据库类型为MySQL,反馈出类似信息说明漏洞的确存在,可以加参数进一步利用。
此外对于一些存在于http消息头中的注入点检测,如:Referer、Cookie等,需要用到参数level,加大检测的深度,目前sqlmap从低到高检测深度分为1-5级,http消息头检测需要–level 3。
以上就是我常用的SQL注入漏洞的验证方法,当然市面上存在着许多SQL注入利用工具,其实SQL注入漏洞,作为一种比较严重的漏洞,其验证的过程也就是其攻击利用的过程,验证出这种漏洞一定要高度重视,及时修补。
没有网络安全,就没有国家安全。