本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
 小维
前言
这篇文章记述了一次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内容  | 

