跳转至

每日一题 —— [MoeCTF 2023]大海捞针

题目地址:https://github.com/XDSEC/MoeCTF_2023/tree/main 自己克隆了之后搭建环境

搭建环境

首先搭建环境,我们使用 docker-compose 搭建环境。由于是动态靶机,根据本届 moectf 的规则,我们使用 moectf{} 的格式作为 flag。上一届是咋样的我已经忘了,其实使用 flag{} 这种格式也不影响,待会细说。

搭建环境用的 docker-compose.yml:

version: '3'
services:
  web:
    build: .
    environment:
      - FLAG=moectf{env_test}
    ports:
      - "8099:80"

开始做题

按照我现在搭建的方式,我访问 http://localhost:8099 就可以。题目提示我们需要用 ?id=1 的方式来连接到平行世界。我们试运行一下,这道题和上一题“彼岸的 flag”一样,可惜因为平台限制,他的做题顺序被打乱了,所以并不能体现这道题是上一题的延续(没有把这一道题放在上一题前面就算好的了。。。)

按照"彼岸的 flag" 的思路,我们需要查看页面源代码,直接查找有没有 flag。我们按下 f12 来直接搜索关键词 moectf ,可以发现有一个 MoeCTF ,可能会影响到我们的扫描,但是因为它是大写,所以不影响我们的扫描。

另外因为源代码里没有 flag 这个字眼,所以我们靶机的 flag 改为 flag{} 格式也没有关系,照样扫。这里我们还是以 moectf{} 举例

我们现在直接来编写一个 python 脚本,然后查找哪一个 id 的平行世界下面的源代码里面,有我们想要的 moectf 关键词:

import requests
url = "http://localhost:8099?id="
for i in range(1, 1001):
    r = requests.get(url=url + str(i))
    if 'moectf' in r.text:
        print(i)

最后终端也是非常干脆地给出了 451 这个数字。那么 flag 就在这个 id 下无疑了。我们直接访问 http://localhost:8099?id=451 就可以看到 flag 了。


文章热度:0次阅读