Өдрийн мэнд. Энэ жилийн U18-д ирсэн зарим вэбийн даалгавруудын writeup-уудыг хүргэж байна. ХаруулЗангиас тухайн шат дууссаны дараа вэб серверүүдээ шууд унтраадаг учраас тэдгээр даалгавруудыг л хийлээ, бусад даалгавруудыг өөрсдөө эндээс хийж үзээрэй.
Logmein1 бие халаалт (5pts)
Хандах хаяг: http://218.100.84.112:9000
Оноо: 5 оноо
Зохиосон: reamb
Өгөгдсөн вэб хуудсыг доорх зурагт үзүүлэв.
Уг даалгаварт өгөгдсөн хуудасны source-г харвал дараах жаваскрипт байв.
$(document).ready(function () { $("#login").submit(function (e) { e.preventDefault(); var username = $("#username").val(); var password = $("#password").val(); if (username == "admin" && password == "supersecure") { document.location = "success.php"; } else { alert("Incorrect username and password!"); } });});username болон password-г зөв оруулбал
success.php хуудас руу үсэрч байна.
Уг хуудас руу орвол туг харагдана.
Here is your flag: HZU18{cl1ent_s1d3_auth_sux}Logmein2 (10pts)
Хандах хаяг: http://218.100.84.112:9003
Оноо: 10 оноо
Зохиосон: reamb
Өгөгдсөн вэб хуудас өмнөх даалгавартай яг адилхан харагдав.
Уг даалгаварт өгөгдсөн хуудасны source-г харвал дараах коммэнт байв.
<!— delete it later index.phps —!>
Орж үзэхэд дараах php код харагдана.
<?phpinclude 'flag.php';
if (isset($_POST['password'])) { if ($_POST['username']=='admin' && md5($_POST['password'])=='86a8b9ded31796c99d3cd6336609bc88') { echo '<h1 style="color:red">'.$flag.'</h1>'; } else{ echo 'Username or password incorrect'; }}else{}?>Өгөгдсөн 86a8b9ded31796c99d3cd6336609bc88 md5 хашыг энд-ээс хайвал
SuperSecurePassword гэж олдоно.
Олдсон username => admin
password => SuperSecurePassword-аар нэвтрэхэд туг харагдах болно.
HZU18{you_kn0w_about_hash}Logmein3 (50pts)
Хандах хаяг: http://218.100.84.112:9001
Оноо: 50 оноо
Зохиосон: Ds3c
Өгөгдсөн вэб хуудас энгийн л хэрэглэгчийн нэр болон нууц үгийн форм харагдана.
Мөн php эх код харах холбоос байв. Эх кодыг доор харуулав.
<?phpinclude'flag.php';if (isset($_POST['login'])) { if ($_POST['username']!=$_POST['password'] && md5($_POST['username'])==md5($_POST['password'])) { echo '<h1 style="color:red">'.$flag.'</h1>'; } else{ $sound_id =(rand(1,10)); echo 'Username or password incorrect'; echo '<audio autoplay> <source src="sound/Sound_Effect_HD_'.$sound_id.'.mp3" type="audio/mpeg"> </audio>'; }}Уг кодыг анализ хийвэл username болон password нь өөр боловч md5 хаш нь == шалгалтыг давах ёстой харагдана.
Үүнийг давахын тулд бяцхан заль ашиглах болно.
md5 хаш нь0e123...тай тэнцүү байх утгуудыг ашиглая.
Энэ алдааны талаар эндээс дэлгэрэнгүй уншаарай.
MD5 ("240610708") = 0e462097431906509019562988736854MD5 ("aabg7XSs") = 0e087386482136013740957780965295MD5 ("aaroZmOk") = 4e91292830102879cd95e9bae60460e7MD5 ("QNKCDZO") = 0e830400451993494058024219903391MD5 ("aabC9RqS") = 0e041022518165728065344349536299MD5 ("Password147186970!") = 0e153958235710973524115407854157Дээрх жагсаалтаас дурын 2-ыг сонгон нэвтрэхэд туг гарч ирнэ.
password Password147186970!username 240610708HZU18{s1gns1gns1gnaftermd5}Baby Web (65pts)
Хандах хаяг: http://218.100.84.112:9004/
Оноо: 65 оноо
Зохиосон: W01f
Уг даалгаварт өгөгдсөн шифиг доор оруулав.
<html><head><title>BigNumber</title><link rel='stylesheet' href='style.css' type='text/css'></head><body>
<?phprequire 'flag.php';
if (isset($_GET)) { if (is_numeric($_GET)) { if (strlen($_GET) < 4) { if ($_GET > 999) die('Flag: ' . $flag); else print '<p class="alert">Baga bna, Tom Bai</p>'; } else print '<p class="alert">Tom bna, Baga bai</p>'; } else print '<p class="alert">No Number, No Cry</p>';}
?>
<section class="login"><form method="get"><input type="text" required name="too" placeholder="Numbers Only" /><br/><input type="submit"/></form></section></body></html>Уг кодыг анализ хийвэл 999 өөс их тоо оруулах ёстой боловч орон нь 3аас их байж болохгүй.
Энэ даалгаврыг хийхийн тулд
1000 = 10^3 = 1 * 10^3 = 1e3 бичиглэлийг ашиглах ёстой.
1e3 гэсэн утгыг формд бөглөхөд туг гарч ирнэ.
Flag: HZU18{HEX_NUMBER>999}