CISP-PTE靶机基础真题实训之代码审计(二)
代码分析:
<?php
header("Content-type:text/html;charset=utf-8");
/*
Hint:
get the shell find the key;)\n"; #使用shell,找到key
*/
echo strlen($_GET['cmd']); #输出获取到cmd的长度
if (isset($_GET['cmd']) && strlen($_GET['cmd']) <= 30) # 如果获取到的cmd满足长度小于30,则执行cmd
{
@exec($_GET['cmd']); #exec只会执行,并将执行的结果当作返回值返回,不会展示到网页当中
}
highlight_file(__FILE__);
echo "<br /> IP : {$_SERVER['REMOTE_ADDR']}"; #输出源码地址
分析结果:
1、使用shell,找到key
2、get方式获取参数cmd
3、参数cmd需要满足条件,传入内容长度需要小于30
4、exec函数来执行获取到的cmd,执行结果不会返回到页面中
解题步骤:
1、分析代码后,输入cmd可以执行我们想要的任何命令,但不会显示
2、要想显示可以使用重定向的方式,将不会显示的内容结果放到x.html文件中,> x.html
3、访问成功,出现key
写入:?cmd=ls >x.html