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 @   Athena-ydy  阅读(115)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示