web
一.cat flag
1.打开链接,出现以下php代码
<?php
if (isset($_GET['cmd'])) {
$cmd = $_GET['cmd'];
if (!preg_match('/flag/i',$cmd))
{
$cmd = escapeshellarg($cmd);
system('cat ' . $cmd);
}
} else {
highlight_file(__FILE__);
}
?>
2.hint提示:管理员曾访问过flag 于是想到查看日志文件,由于没有给出其他提示信息,所以尝试报错出服务器版本号

3.知道服务器为nginx,而nginx默认日志文件路径为/var/log/nginx/access.log
4.构造url,读取日志文件

5.发现可疑字符串this_is_final_flag_e2a457126032b42d.php,直接查找发现并没有,应该是被escapeshellargs过滤了,于是尝试用一些不能解析的符合绕过如%aa,后来意外地发现%a0也可以哎
如:/?cmd=this_is_final_fl%aaag_e2a457126032b42d.php
但是要注意flag藏在源码里,直接看是看不到的
**注意**单引号包裹,通配符不起作用
本文来自博客园,作者:Athena-ydy,转载请注明原文链接:https://www.cnblogs.com/Athena-ydy/p/15122781.html

浙公网安备 33010602011771号