Өдрийн мэнд. Энэ жилийн U18-д ирсэн зарим даалгавруудын writeup-уудыг хүргэж байна. ХаруулЗангиас тухайн шат дууссаны дараа вэб серверүүдээ шууд унтраадаг учраас тэдгээр даалгавруудыг л хийлээ, бусад даалгавруудыг өөрсдөө эндээс хийж үзээрэй.
Math (40pts)
Хандах хаяг: http://218.100.84.112:9091
Оноо: 40 оноо
Зохиосон: Ds3C
Өгөгдсөн вэб хуудсыг доорх зурагт үзүүлэв.
Уг даалгаварт 3 тоо өгөгдсөн бөгөөд, тэдгээрийг ашиглан математик илэрхийлэл бодох ёстой байв. Гэвч нэг асуудал байгаа бөгөөд тоо тус бүрийг md5-аар хаш хийсэн байна, бодлогыг бодохын тулд тоо тус бүрийг олох ёстой. Тоонууд хэрэв 0 - 1000 дотор байвал dictionary үүсгэж болох хэдий ч би онлайн апи (http://md5decrypt.net/en/Api/) ашиглахаар шийдлээ.
Уг api-г ашиглахын тулд мэйлээрээ бүртгүүлж нууц код авдаг юм билээ.
Дараа нь мэйл болон нууц кодоо ашиглан get хүсэлт явуулж ашиглах боломжтой.
import requestsimport re
response = requests.get("http://218.100.84.112:9091/")cookie = response.cookies['PHPSESSID']
numbers = re.findall(r'[A-C]\=[a-f0-9]+', response.text)
a = requests.get("http://md5decrypt.net/Api/api.php?hash=" + numbers[0].split('=')[1] + "&hash_type=md5&email=mixonunu@2ether.net&code=bf5af2048b5656bc").textb = requests.get("http://md5decrypt.net/Api/api.php?hash=" + numbers[1].split('=')[1] + "&hash_type=md5&email=mixonunu@2ether.net&code=bf5af2048b5656bc").textc = requests.get("http://md5decrypt.net/Api/api.php?hash=" + numbers[2].split('=')[1] + "&hash_type=md5&email=mixonunu@2ether.net&code=bf5af2048b5656bc").text
answer = (int(a) * int(b)) / int(c)print "Answer is: " + str(answer)
r = requests.post("http://218.100.84.112:9091/", data={'answer':int(answer), 'sum':int(answer)}, headers={'Cookie': 'PHPSESSID=' + cookie})# print r.text[0:100]flag = re.search(r'HZU18\{\S+\}', r.text)if flag: print "FLAG IS: " + flag.group(0)Note:
pip install requests
Туг: HZU18{S1mPl3_M4th}Sum Part 2 (50pts)
Хандах хаяг: http://218.100.84.112:9090
Оноо: 50 оноо
Зохиосон: Ds3C
Өгөгдсөн вэб хуудсыг доорх зурагт үзүүлэв.
Уг даалгаварт маш олон тоонууд өгөгдсөн бөгөөд тэдгээрийн нийлбэрийг олж POST хүсэлт явуулах ёстой байв. Хэрэв 2 жилийн өмнөх харуул зангийн даалгавруудыг санаж байвал төстэй нэгэн даалгавар байгаа.
Regex ашиглан тоонуудыг олоод, нийлбэрийг олно.
Нийлбэрийг илгээхдээ өмнөх cookie-гээ ашиглах ёстой.
import refrom decimal import Decimalimport requests
response = requests.get("http://218.100.84.112:9090/")cookie = response.cookies['PHPSESSID']
numbers = re.findall(r'\d+\s\,', response.text)
summation = sum(Decimal(i.replace(' ,', '')) for i in numbers)print "Niilber: " + str(summation)
r = requests.post("http://218.100.84.112:9090/", data={'answer':int(summation),'sum': int(summation)}, headers={'Cookie': 'PHPSESSID=' + cookie})flag = re.search(r'HZU18\{{1}\S+\}{1}', r.text)if flag: print "FLAG IS: " + flag.group(0)Note:
pip install requests
Туг: HZU18{M4th_Kill3r}