1、常见的提交方式
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
HEAD | 类似GET请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 请求服务器删除指定的页面 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
PATCH | 是对PUT方法的补充,用来对已知资源进行局部更新 |
2、常见注入
2.1、GET注入
- get注入比较常见,例如:www.xxx.com/new.asp?id=11
- 检测方式
- /
- -0
- ’
- %bf’
2.3、POST注入
- post提交方式主要适用于表单的提交/用于登录框的注入
- 测试工具:穿山甲(pangolin)、sqlmap
2.4、COOKIE注入
-
cookie提交用于账号密码的cookie缓存
-
可以通过cookie注入来突破简单的防注入系统
-
注入方法:
sqlmap.py -u http://www.xxx.com/new.asp --cookie "id=30" --level 2
2.5、字符型注入
-
www.xxx.com/news.asp?id=你好 'and 1=1# selcet * from new where id = '你好' and 1=1#'
-
www.xxx.com/news.asp?id=你好 'and 1=1' selcet * from new where id = '你好' and 1=1# selcet * from new where id = '你好' and 1=1'
2.5、数字型注入
-
www.xxx.com/news.asp?id=11 select *from news where id=11
-
www.xxx.com/news.asp?id=11 and 1=1 select *from news where id=11 and 1=1
3、其他注入
3.1、伪静态注入
-
http://das.dsad.com.cn/index.php/index/id/2223.html
-
http://das.dsad.com.cn/index.php/index/id/2223
-
经常出现在asocms、phpweb、Thinkphp框架
3.2、延迟注入
3.2.1、简介
-
延迟注入是通过页面返回的时间来判断的,不同的mysql数据库版本,延迟注入语句也不同
-
mysql >= 5.0 的可以使用sleep()进行查询
-
mysql<5.0 的可以使用benchmark()进行查询
3.2.2、benchmark()用法
benchmark(n,sql语句) n为查询次数
通过查询次数增多,时间变得缓慢来判断是否存在延迟
select benchmark(1000,select * from admin);
3.2.3、sleep()延迟注入语法
-
sleep()可以强制产生一个固定的延迟。
-
sleep()延迟注入核心原理
-
and if (true,sleep(5),0);==IF(1=1,true,false);
-
id=1 and sleep(5) //判断下是否存在延迟注入
-
and if(substring(usr),1,4)='root',sleep(5),1) //判断当前用户
-
and if(MID(version(),1,1)LIKE 5,sleep(5),1) //判断数据库版本信息是否为5
-
and if(ascii(substring(database(),1,4))>100,sleep(5),1) //猜解数据库名称
-
sqlmap --time-sec=2 //延迟注入
3.2.4、base64编码注入
- 解码
- 构造语句
- 编码
- id)
4、二阶注入
- SQL注入一般可分为两种,一阶注入(普通的SQL注入)和二阶SQL注入。
4.1、一阶注入
-
一阶SQL注入发生在一个HTTP请求和响应中,系统对攻击输入立即反应执行。
-
一阶注入的攻击过程归纳如下:
- 攻击者在HTTP请求中提交恶意sql语句
- 应用处理恶意输入,使用恶意输入动态构建SQL语句
- 如果攻击实现,在响应中向攻击者返回结构
4.2、二阶注入
-
二阶注入,作为sql注入的一种,他不同于普通的SQL注入,恶意代码被注入到web应用中不立即执行,而是存储到后端数据库,在处理另一次不同的请求是,应用检索到数据库中的恶意输入并利用它动态构建SQL语句,实现了攻击。
-
二阶注入的攻击过程归纳如下:
- 攻击者在一个HTTP请求中提交恶意输入
- 用于将恶意输入保存在数据库中
- 攻击者提交第二个HTTP请求
- 为处理第二个HTTP请求,应用检索存储在后端数据库中的恶意输入,动态构建SQL语句
- 如果攻击实现,在第二个请求的响应中向攻击者返回结果
-
二阶注入攻击方式
攻击存储
注入攻击
4.3、HTTP头注入
常见的http请求中存在注入的参数
- User-agent
- Referer
- X-Forwarded-For
- client_ip