SHA2017 CTF round Teaser NoComment..Again writeup

問題文

There might be something hiddenq in this file, can you find it?

.exeが与えられる。

解く

動かしてみると、PealApp Utilityのライセンスが評価版で期限が切れたという旨のメッセージが出る。 これはPCの時間をn日前にすることで回避できる。この問題を落とした直後はこのようなメッセージは出なかった。 PealApp自体は無料のライブラリっぽいし、このメッセージで検索しても何もでないので、ライセンス問題ではなく、開発者がアンチデバッグ目的で仕込んだ可能性がある。

f:id:TAKEmaru:20170628044608p:plain

CTFが終わった直後は以下のように動作した。正しいパスワードをいれればいいっぽい?

f:id:TAKEmaru:20170628070904p:plain

また、IDAのString ViewでPealApp::hogeという文字列が散見されるのでPeal製のプログラムだと分かる。scriptnameというあやしい文字列があったので、その付近を見ていく。

f:id:TAKEmaru:20170628070646p:plain

このGraph Viewのすぐしたに"-e#line1"という文字列をstackに積んでいた。Pealのeオプションはワンライナーを実行するので、Pealのコードがこの付近でスタックに出てきそうだと当たりをつける。

f:id:TAKEmaru:20170628070701p:plain

0x40549AでSHA_Teaser_bin100.plというファイル名へのアドレスがスタックに積まれた。

f:id:TAKEmaru:20170628070746p:plain

0x4054C7でPealのソースへのアドレスがスタックに積まれた。

f:id:TAKEmaru:20170628070630p:plain

これのPerlスクリプトをHex Viewから取り出すと以下のようになる。

#!/usr/bin/perl
 
print "\n[*] SHA2017 CTF Teaser BIN 100\n".
      "      No comment... again...\n\n";
 
$secret = "SuPeRS3cr3tsTuFf?!";
 
print "[*] What is the secret? ";
$answer = <STDIN>
chomp($answer);
 
if ($answer eq $secret) {
  print "\n[*] Yes, that is correct! However that was not the goal of this challen
    ge.\n".
        "    Did you know that compiled code does not contain any comments?\n";
} else {
    print "\n[*] Isn't that cute...but it is WRONG!\n";
}
 
#  W e l l ,    w e l l,    t h e r e    i s    a    c o m m e n t    a g a i n  
    . . . .
#
# .----------------. .----------------. .----------------. .----------------. 
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |  _________   | | |   _____      | | |      __      | | |    ______    | |
#| | |_   ___  |  | | |  |_   _|     | | |     /  \     | | |  .' ___  |   | |
#| |   | |_  \_|  | | |    | |       | | |    / /\ \    | | | / .'   \_|   | |
#| |   |  _|      | | |    | |   _   | | |   / ____ \   | | | | |    ____  | |
#| |  _| |_       | | |   _| |__/ |  | | | _/ /    \ \_ | | | \ `.___]  _| | |
#| | |_____|      | | |  |________|  | | ||____|  |____|| | |  `._____.'   | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------.
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |       __     | | |     ____     | | |    ______    | | |     ____     | |
#| |     .' _/    | | |   .'    '.   | | |  .' ____ '.  | | |   .' __ '.   | |
#| |     | |      | | |  |  .--.  |  | | |  | (____) |  | | |   | (__) |   | |
#| |    < <       | | |  | |    | |  | | |  '_.____. |  | | |   .`____'.   | |
#| |     | |_     | | |  |  `--'  |  | | |  | \____| |  | | |  | (____) |  | |
#| |     `.__\    | | |   '.____.'   | | |   \______,'  | | |  `.______.'  | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------.
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |   ______     | | |     ____     | | |   _    _     | | |   _______    | |
#| |  |_   _ \    | | |   .'    '.   | | |  | |  | |    | | |  |  ___  |   | |
#| |    | |_) |   | | |  |  .--.  |  | | |  | |__| |_   | | |  |_/  / /    | |
#| |    |  __'.   | | |  | |    | |  | | |  |____   _|  | | |      / /     | |
#| |   _| |__) |  | | |  |  `--'  |  | | |      _| |_   | | |     / /      | |
#| |  |_______/   | | |   '.____.'   | | |     |_____|  | | |    /_/       | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------.
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |      __      | | |      __      | | |     __       | | |    ______    | |
#| |     /  \     | | |     /  \     | | |    /  |      | | |  .' ____ '.  | |
#| |    / /\ \    | | |    / /\ \    | | |    `| |      | | |  | (____) |  | |
#| |   / ____ \   | | |   / ____ \   | | |     | |      | | |  '_.____. |  | |
#| | _/ /    \ \_ | | | _/ /    \ \_ | | |    _| |_     | | |  | \____| |  | |
#| ||____|  |____|| | ||____|  |____|| | |   |_____|    | | |   \______,'  | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------.
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |    ______    | | |   _______    | | |   _______    | | |     ______   | |
#| |   / ____ `.  | | |  |  ___  |   | | |  |  _____|   | | |   .' ___  |  | |
#| |   `'  __) |  | | |  |_/  / /    | | |  | |____     | | |  / .'   \_|  | |
#| |   _  |__ '.  | | |      / /     | | |  '_.____''.  | | |  | |         | |
#| |  | \____) |  | | |     / /      | | |  | \____) |  | | |  \ `.___.'\  | |
#| |   \______.'  | | |    /_/       | | |   \______.'  | | |   `._____.'  | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------.
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |     ______   | | |   _______    | | |     ____     | | |      __      | |
#| |   .' ___  |  | | |  |  ___  |   | | |   .'    '.   | | |     /  \     | |
#| |  / .'   \_|  | | |  |_/  / /    | | |  |  .--.  |  | | |    / /\ \    | |
#| |  | |         | | |      / /     | | |  | |    | |  | | |   / ____ \   | |
#| |  \ `.___.'\  | | |     / /      | | |  |  `--'  |  | | | _/ /    \ \_ | |
#| |   `._____.'  | | |    /_/       | | |   '.____.'   | | ||____|  |____|| |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------.
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |  _________   | | |     __       | | |     ______   | | |   _    _     | |
#| | |_   ___  |  | | |    /  |      | | |   .' ___  |  | | |  | |  | |    | |
#| |   | |_  \_|  | | |    `| |      | | |  / .'   \_|  | | |  | |__| |_   | |
#| |   |  _|  _   | | |     | |      | | |  | |         | | |  |____   _|  | |
#| |  _| |___/ |  | | |    _| |_     | | |  \ `.___.'\  | | |      _| |_   | |
#| | |_________|  | | |   |_____|    | | |   `._____.'  | | |     |_____|  | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------. 
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |     ____     | | |      __      | | |     ____     | | |    ______    | |
#| |   .' __ '.   | | |     /  \     | | |   .'    '.   | | |   / ____ `.  | |
#| |   | (__) |   | | |    / /\ \    | | |  |  .--.  |  | | |   `'  __) |  | |
#| |   .`____'.   | | |   / ____ \   | | |  | |    | |  | | |   _  |__ '.  | |
#| |  | (____) |  | | | _/ /    \ \_ | | |  |  `--'  |  | | |  | \____) |  | |
#| |  `.______.'  | | ||____|  |____|| | |   '.____.'   | | |   \______.'  | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------' 
# .----------------. .----------------. .----------------. .----------------. 
#| .--------------. | .--------------. | .--------------. | .--------------. |
#| |      __      | | |  ________    | | |    _____     | | |     ______   | |
#| |     /  \     | | | |_   ___ `.  | | |   / ___ `.   | | |   .' ___  |  | |
#| |    / /\ \    | | |   | |   `. \ | | |  |_/___) |   | | |  / .'   \_|  | |
#| |   / ____ \   | | |   | |    | | | | |   .'____.'   | | |  | |         | |
#| | _/ /    \ \_ | | |  _| |___.' / | | |  / /____     | | |  \ `.___.'\  | |
#| ||____|  |____|| | | |________.'  | | |  |_______|   | | |   `._____.'  | |
#| |              | | |              | | |              | | |              | |
#| '--------------' | '--------------' | '--------------' | '--------------' |
# '----------------' '----------------' '----------------' '----------------'  
# .----------------. .----------------. 
#| .--------------. | .--------------. |
#| |    ______    | | |     __       | |
#| |  .' ____ \   | | |    \_ `.     | |
#| |  | |____\_|  | | |      | |     | |
#| |  | '____`'.  | | |       > >    | |
#| |  | (____) |  | | |     _| |     | |
#| |  '.______.'  | | |    /__.'     | |
#| |              | | |              | |
#| '--------------' | '--------------' | 

アスキーアートがflagだった。FLAG{098B047AA19375CC70AE1C48A03AD2C6}