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藏在源码里,直接看是看不到的

**注意**单引号包裹,通配符不起作用

 

posted @ 2021-08-10 11:32  Athena-ydy  阅读(136)  评论(0)    收藏  举报