攻击分类及提交方式
注入前的准备与注入漏洞检测
在进行 SQL 注入攻击时,需要利用到从服务器返回的各种出错信息,默认设置是不显示详细错误返回信息的,因此首先要取消 IE 浏览器返回信息设置,以便查看到注入攻击时返回的数据库信息
将浏览器设置选项高级 显示取消友好 HTTP 错误信息
手工检测 SQL 注入点
最常用的 SQL 注入点判断方法,是在网站中寻找如下形式的网页链接。
http://www.*****.com/***.asp?id=xx (ASP 注入)
或者下面的链接。
http://www.*****.com/***.php?id=xx (php 注入)
http://www.*****.com/***.jsp?id=xx (jsp 注入)
http://www.*****.com/***.aspx?id=xx (aspx 注入)
http://www.*****.com/index.asp?id=8&page=99 (有多个参数)
(注:注入的时候确认是 id 参数还page 参数,工具默认只对后面 page 参数注入,所以要对工具进行配置或者手工调换)
http://www.*****.com/index/new/id/8 伪静态
http://www. *****.com/index/new/php-8.html 伪静态
其中的“**”可能是数字,也有可能是字符串
分别被称为整数类型数据和字符型数据
如何判断某个网页链接是否存在 SQL 注入漏洞呢?通常有两种检测方法。
1.“单引号”法
第一种检测 SQL 注入漏洞是否存在的方法是“单引号”法。方法很简单,直接在浏览器地址栏中的网址链接后加上一个单引号,如果页面不能正常显示,浏览器返回一些异常信息, 则说明该链接可能存在注入漏洞。
2. 1=1 和 1=2 法
很多时候检测提交包含引号的链接时,会提示非法字符,或者直接不返回任何信息,但 这并不等于不存在 SQL 注入漏洞。此时可使用经典的“1=1 和 1=2”法进行检测。方法很简 单,就是直接在链接地址后分别加上 and 1=1 和 and 1=2 进行提交,如果返回不同的页面, 那么说明存在 SQL 注入漏洞。
注入分类
数字型注入
注入参数为数字
字符型注入
注意单引号闭合
搜索型注入
%xxx%' or 1=1 #%
SQL 的模糊查询命令 select * from 表名 where 字段名 like ‘%(对应值)%’;
XX型注入
XX') or 1=1#
单引号闭合
由于 SQL 语句拼接方式不同
注入提交方式
ASP
request (全部接受)
request.querystring (接受 get)
request.form (接受 post)
request.cookie(接受 cookie)
PHP:
$_REQUEST(全部接受)
$_GET(接受get)
$_POST (接受 post)
$_COOKIE(接受 cookie)
三种方式注入方法
post
可通过安装火狐浏览器插件(hackbar)或 Burp 工具来完成
get
一般直接通过浏览器地址栏提交
cookie
一般通 Burp 工具来完成,修改cookie,进行一个注入
注意
这是由程序代码自身决定的
一般中间件 waf 防火墙 对get防护最高 其次是post 最后是cookie
很多人在写注入防御代码时,写了post get的,但是没有过滤cookie的