EasyP
先上源码 题目是这个[鹤城杯2021]EasyP
进来就看到一个post传参传guess我傻傻的看了半天不知道secret是啥,后来才知道是迷惑我的
然后就开始考虑正则了,先解释三个函数$_SERVER['PHP_SELF']
这个是指代调用脚本的路径
比如说这个题目它的值就是/index.php
如果你访问的是
http://127.0.0.1/index.php/utils.php
那么它的值就会是/index.php/utils.php$_SERVER['REQUEST_URI']
这个跟上面那个函数的区别就是会把后面的参数内容也包含进去basename
接下来就是要绕过正则了
1 |
|
最后是关于basename的绕过了,这个函数有个特点
如果传入的参数中出现了非ascii字符则会把它给丢弃,中文就不是ascii字符
那么直接上payload
http://node4.anna.nssctf.cn:28192/index.php/utils.php/元神还是原神?show.source=1
还有一个为什么要加一个index.php的问题
peekaboo大佬的wp里面:
为什么前面需要添加一个/index.php呢
因为当我们传入index.php/utils.php时,仍然请求的是index.php,
但是当basename()处理后,highlight_file()得到的参数就变成了utils.php,从而我们就实现了任意文件包含
EasyP
http://example.com/2024/07/15/EasyP/