本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
小维
前言
这篇文章记述了一次CTF拉练的一道php的白盒审计题…
源码
1 |
|
思路解析
首先分析代码, 一开始先定义了一个filter
过滤了一些bash命令等关键字(这里过滤了大多数常见的命令、符号等),定义了一个$_GET变量
用于接收来自GET方法的数据,经过匹配filter
后,如果没有相关关键字则将用户GET传的数据拼接echo 'okkkkkk'
后执行system()
函数,如果匹配到相关字眼就输出ohhhhnnnoooooooooo.....
并退出,所以整道题的核心就是绕过filter
。
初步想法
利用Linux其他相关可以查找、查看的命令再利用相关分隔符、拼接符等进行来绕过后面的拼接。
本题考点
① 空格绕过
② Linux其他相关可以列目录文件的命令
③ Linux其他相关可以查看文件的命令
解题步骤
方式一
1 | ① 利用 du -a 查看flag文件名 |
本地模拟环境测试命令
1 | # 查看当前目录文件名为this_is_real_real_flag_other_is_fake |
1 | # 查看this_is_real_real_flag_other_is_fake内容 |
方式二
1 | ① 利用chgrp -v -R 查看flag文件名 |
本地模拟环境测试命令
1 | # 查看当前目录文件名为this_is_real_real_flag_other_is_fake |
1 | # 查看this_is_real_real_flag_other_is_fake内容 |