escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数

功能 :escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,shell 函数包含 exec(), system() 执行运算符(反引号)sad

hint有提示 管理员曾访问过flag
随便输⼀个url访问一个不存在的页面
报错返回404 Not Found nginx/1.18.0
DASCTF×CBCTF:web cat flag_字符串

 

可以知道服务器是nginx,百度搜索一下nginx的日志在哪存放

DASCTF×CBCTF:web cat flag_2d_02

nginx 默认日志类型有两个 

1、access.log

 http 记录访问日志。

2、error.log   

server 操作记录日志

分别查看一下

DASCTF×CBCTF:web cat flag_字符串_03

 

可以看到flag存放的位置在this_is_final_flag_e2a457126032b42d.php

由于有preg_match过滤了flag字符

构造playload:?cmd=this_is_final_fl%aaag_e2a457126032b42d.php

DASCTF×CBCTF:web cat flag_2d_04

 

 得到flag

DASCTF×CBCTF:web cat flag_2d_05