2018年01月

Break In CTF 2018 writeup Q2: Connecting Will

Q2: Connecting Will

Will is lost in the Upside-Down and is stuck with the Demogorgon. El is looking for Will, when, she stumbles across a piece of code that Will wrote. The Demogorgon could not decipher the code and hence just left it lying around. El needs your help to find the 2 numbers that can get her the secret key which Will was trying to share. Can you help her?

Link to submit: https://felicity.iiit.ac.in/contest/breakin/findingwill/index.html

<?php
/** 
 * Find hashes which match 
*/
if (!array_key_exists('val1', $_POST) || !array_key_exists('val2', $_POST)) {
    echo "Please send the inputs correctly\n";
    exit(0);
}

$first = $_POST['val1'];
$second = $_POST['val2'];

if (!(is_numeric($first) || is_numeric($second))) {
    echo "Invalid input\n";
    exit(0);
}

$hash1 = hash('md5', $first, false);
$hash2 = hash('md5', $second, false);

if ($hash1 != $hash2) {
    $hash1 = strtr($hash1, "abcd", "0123");
    $hash2 = strtr($hash2, "abcd", "0123");
    if ($hash1 == $hash2) {
        // Flag will be echoed here.
    } else {
        echo "Hard luck :(\nKeep trying\n";
    }
} else {
    echo "Hard luck :(\nKeep trying\n";
}

?>

Points: 500

Flag Format: BREAKIN{[0-9A-Za-z_]+}

HINT: It’s a magical world without magical methods

Tags: Misc

phpのソースコードを読むと次のことが分かります。
  • 2つの入力値のうち少なくともどちらか一方は数字である必要がある
  • それぞれのmd5ハッシュ値が異なる
  • それぞれのハッシュ値に出現するabcdの各文字を0123に置換した文字列を==で比較すると一致する
まず、phpでハッシュ値が0eで始まる文字列を==で比較すると0の累乗として扱われ両方とも0となって一致してしまうという問題があります。

したがって、1つ目の入力値の方はmd5ハッシュ値が0eで始まる文字列になり、2つ目の入力値の方はmd5ハッシュ値がaeで始まる文字列であれば、最初の比較では異なりabcdを0123に置換した後ではともに0eで始まるハッシュ値となり一致することになります。

下記のサイトで条件に該当するハッシュ値を探すことができます。

それでは問題に提示されたURLを表示します。240610708はmd5ハッシュ値が0eで始まり、8_g49iohyはmd5ハッシュ値がaeで始まりますので、それらを入力します。

1

下図のとおりフラグが表示されました。

2

フラグは、
BREAKIN{I_Will_Connect}
です。

初めてのPHP
David Sklar
オライリージャパン
2017-03-18


Break In CTF 2018 writeup Q1: Weird Error

Q1: Weird Error

Vaneesh wants to learn javascript from Sanukul. But Sanukul is busy with his love Mary. Vaneesh found something weird in the source code. Can you find it too?

Points: 100

Flag Format: BREAKIN{[0-9A-Za-z_]+}

HINT: Its not pretty, but it is important.

Tags: Misc

提示されたURLを表示します。下図のようにゲームらしき画面が表示されます。

1

jquery.min.jsファイルを見てみると下図のようにフラグが記載されています。

2

フラグは、
BREAKIN{MJISLUV}
です。

jQuery最高の教科書
株式会社シフトブレイン
SBクリエイティブ
2013-11-26


WhiteHat Grand Prix 2017 writeup FeelMyPain

FeelMyPain

Point: 100

Where pain comes from ? Find it and answer me!

Download:

http://material.grandprix.whitehatvn.com/grandprix2017/FeelMyPain_19c75ab715c271b61a947916fb8ed714c9e80d11.zip

http://bak.material.grandprix.whitehatvn.com/grandprix2017/FeelMyPain_19c75ab715c271b61a947916fb8ed714c9e80d11.zip

http://bak1.material.grandprix.whitehatvn.com/grandprix2017/FeelMyPain_19c75ab715c271b61a947916fb8ed714c9e80d11.zip

Author - BkavTeam

ダウンロードしたファイルを解凍するとexeファイルができます。fileコマンドでファイルタイプを確認します。Windowsのコンソールアプリです。
$ file Pain.exe 
Pain.exe: PE32 executable (console) Intel 80386, for MS Windows
実行してみます。文字化けしているようでよく分かりません。
>Pain.exe
here is your flag: ・.
Wait!!!Something went wrong? 続行するには何かキーを押してください . . .
IDA Pro Freeでステップ実行してみます。下記の場所まで進めるとスタックに文字列が積まれます。

1

この文字列のsha1ハッシュ値を求めます。
love_is_the_reason_why_there_is_pain
0c6e2e8f7719d0966cbc96dc9fab9c7b9c906ff9
フラグは、
WhiteHat{0c6e2e8f7719d0966cbc96dc9fab9c7b9c906ff9}
です。

Windowsデバッグの極意 ツールを使いこなして、バグハント!
Mario Hewardt
アスキー・メディアワークス
2009-04-28


記事検索
ギャラリー
  • TetCTF 2023 NewYearBot
  • UUT CTF writeup Find The Password
  • UUT CTF writeup The Puzzle
  • Hack Zone Tunisia 2019 writeup Microscope
  • Hack Zone Tunisia 2019 writeup Welcome
  • SwampCTF 2019 writeup Brokerboard
  • SwampCTF 2019 writeup Leap of Faith
  • SwampCTF 2019 writeup Last Transmission
  • CBM CTF 2019 writeup Long road
カテゴリー