[LitCTF 2023]PHP是世界上最好的语言!!

[LitCTF 2023]PHP是世界上最好的语言!! wp

进入页面,发现左边有输入框,下面有 RUN CODE 字样,估计是可以执行命令的。

执行 PHP 代码测试


[LitCTF 2023]PHP是世界上最好的语言!!_第1张图片

将 PHP 一句话木马写入文件

为了蚁剑能连上,直接执行木马是不行的,要将木马写入文件中。

fopen() 函数
语法
fopen(filename,mode,include_path,context)
参数 描述
filename 必需。规定要打开的文件或 URL。
mode 必需。规定您请求到该文件/流的访问类型。可能的值: “r” (只读方式打开,将文件指针指向文件头) “r+” (读写方式打开,将文件指针指向文件头) “w” (写入方式打开,清除文件内容,如果文件不存在则尝试创建之) “w+” (读写方式打开,清除文件内容,如果文件不存在则尝试创建之) “a” (写入方式打开,将文件指针指向文件末尾进行写入,如果文件不存在则尝试创建之) “a+” (读写方式打开,通过将文件指针指向文件末尾进行写入来保存文件内容) “x” (创建一个新的文件并以写入方式打开,如果文件已存在则返回 FALSE 和一个错误) “x+” (创建一个新的文件并以读写方式打开,如果文件已存在则返回 FALSE 和一个错误)
include_path 可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。
fopen('shell.php','w')

该语句的意思为,以写入方式打开一个叫做“ shell.php ”,的文件,该文件不存在,故创建了一个shell.php文件。

fputs() 函数

fputs() 函数将内容写入一个打开的文件中。

语法
fputs(file,string,length)
参数 描述
file 必需。规定要写入的打开文件。
string 必需。规定要写入打开文件的字符串。
length 可选。规定要写入的最大字节数。
payload
' ) ?>

没有结果返回,去访问一下是否成功写入:http://node5.anna.nssctf.cn:28606/shell.php ,页面内容为:

[LitCTF 2023]PHP是世界上最好的语言!!_第2张图片

显然是 php 头被过滤了,那么就换一种 payload :

@eval($_POST["shell"]);') ?>

成功写入,并且在 shell2.php 页面没有任何内容,当我高兴地用蚁剑去连的时候发现连不上:返回数据为空

[LitCTF 2023]PHP是世界上最好的语言!!_第3张图片

后来我又尝试写 shell 然后 kali 开 nc 监听,还是连不上。既然如此,那就不连了,反正前面不是已经可以执行代码了嘛。

直接命令执行

根据提示:Flag 位于根目录,但是当我执行下面的命令去找的时候始终没有返回:


后来,我通过查看根目录下的文件,发现 flag 文件确实在根目录,但是名字不叫 Flag ,而是叫 flag 。呵,一个小 trick 。


[LitCTF 2023]PHP是世界上最好的语言!!_第4张图片


[LitCTF 2023]PHP是世界上最好的语言!!_第5张图片

被我发现了。


[LitCTF 2023]PHP是世界上最好的语言!!_第6张图片

你可能感兴趣的:(ctf,php,web安全,网络安全)