一、SQL注入的概述
定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

●SQL注入威胁表现形式可以体现为以下几点:
●绕过认证,获得非法权限
●猜解后台数据库全部的信息
●注入可以借助数据库的存储过程进行提权等操作
●SQL注入攻击的典型手段
●判断应用程序是否存在注入漏洞
●收集信息、并判断数据库类型
●根据注入参数类型,重构SQL语句的原貌
●猜解表名、字段名
●获取账户信息、攻击web或为下一步攻击做准备
二、SQL注入的简单例子
1.SQL注入漏洞的几种判断方法
①http://www.heetian.com/showtail.asp?id=40‘
②http://www.heetian.com/showtail.asp?id=40 and 1=1
③http://www.heetian.com/showtail.asp?id=40 and 1=2
如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。
如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。
2.收集信息、判断数据库类型
从其返回的信息中可以判断下数据库的类型,更多可能可以知道部分数据库中的字段以及其他有用信息,为下一步攻击提供铺垫。
3.根据注入参数类型,重构SQL语句的原貌
4.猜解表名、字段名(直接将SQL语句添加到URL后)
①and exists(select*from 表名)
②and exists(select 字段 from 表名)
方法原理同上
③猜解字段内容(利用以上猜解出的表名和字段名 方法较古老且麻烦)
●猜解字段内容的长度
●得到长度后,猜解具体的内容
(select top 1 asc(mid(username,1,1))from 表名)>0直到>m不成立时,就可以猜解出ASCII码值了。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198597.html原文链接:https://javaforall.net
