はまやんはまやんはまやん

hamayanhamayan's blog

C0llide? [Really Awesome CTF 2020 / RACTF2020]

https://ctftime.org/event/1051

A target service is asking for two bits of information that have the same "custom hash", but can't be identical. Looks like we're going to have to generate a collision?
http://88.198.219.20:33543/

if ((one.length !== two.length) || (one === two)) {
    return res.send("Strings are either too different or not different enough")
}
one = customhash.hash(secret_key + one)
two = customhash.hash(secret_key + two)
if (one == two) {
    console.log("[*] Flag get!")
    return res.send(flag)
}

getflagのこの辺が重要な部分である。
比較のバイパスでよく使われるのが配列を与えることなので、配列を与えてみる。
{"one":[], "two":[]}
フラグが出てくる。
後付けで理由を考えてみると、何となくバイパスできそうな感じはする。