Lao Young Hacker Competition | CTF — Writeup

JocKKy
LaoHacker
Published in
6 min readOct 1, 2022

ສະບາຍດີໝູ່ເພື່ອນໝົດທຸກຄົນ ຂ້າພະເຈົ້າມີຊື່ວ່າ: ທ້າວ ວິໄລສອນ ຈັນທະວົງ (JocKKy) ຈາກທີມ NayNayNayNayNay ເຊິ່ງເປັນໜຶ່ງໃນທີມທີ່ໄດ້ເຂົ້າຮ່ວມ ງານແຂ່ງຂັນໃນງານນີ້ ແລະ ຂ້ອຍເອງໄດ້ຮັບກຽດຈາກສະມາຊິກໃນທີມໃນການ ຂຽນບົດຄວາມນີ້

ກ່ອນອື່ນໝົດເຮົາມາທຳຄວາມຮູ້ຈັກກັບງານນີ້ນຳກັນກ່ອນ:

Intro: ການແຂ່ງຂັນ LAO YOUNG HACKER COMPETITION(LYHC) ເພື່ອຄັດເລືອກໂຕແທນເພື່ອໄປແຂ່ງຂັນ ຄວາມປອດໄພໄຊເບີ ຫຼື Capture The Flag ທີ່ງານ CYBER SEA GAME, ສຳລັບຜູ້ຊະນະເລີດທີ່ງານ CYBER SEA GAME ຈະໄດ້ໄປຮ່ວມແຂ່ງຂັນລະດັບໂລກຕໍ່ທີ່ງານ SECCON ປະເທດຍີ່ປຸ່ນ! ເຊິ່ງເປັນການແຂ່ງຂັນຮູບແບບ Jeopardy ໂດຍການແຂ່ງຂັນ LYHC ນີ້ຈັດຂຶ້ນໃນວັນສຸກທີ 30 ກັນຍາ 2022 ທີ່ຜ່ານມາ.

ເຊິ່ງທີມຂອງພວກເຮົາປະກອບມີ 3 ຄົນ:
1. ທ້າວ ວິໄລສອນ ຈັນທະວົງ (JocKKy) | https://www.facebook.com/jockky.chanthavong/
2. ທ້າວ ທິມພະຈິງ ແພງພາວັນ (T1MM7) | https://www.facebook.com/Tym.ppv
3. ທ້າວ ພຸດຄຳ ໄຊສົມບັດ (phoutkham) | https://www.facebook.com/mr.phoutkham

scoreboard

ເນ ເນ ເນ ເນ ເນ !!

ໃນບົດຄວາມນີ້ພວກເຮົາຈະມາຂຽນສະຫຼຸບວິທີການຜ່ານໂຈດທີ່ທີມຂອງພວກເຮົາ ສາມາດແກ້ໄດ້ ແບບສັ້ນໆ!

PROGRAMMING

  • Cyclone

ວິທີແກ້ໃຫ້ເອົາໂຕອັກສອນຄູນກັບໂຕເລກຕົວຢ່າງ: 1L= L, 2Y = YY

LYH{IIIIIIIIIIIllttIiIllllllllllllliIliIIllllllllllOIloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooiIlllttt}
flag ໂດຍປະມານບໍ່ແນ່ໃຈວ່່າໄລ່ຖືກບໍ ເນເນເນເນເນ 555555+

  • The Art of Natural Number

ລອງຫຼິ້ນໆງົມໆກັບໂຈດສັງເກດເຫັນການໃຊ້ໂຕດຳເນີນງານທາງຄະນິດສາດ(-=) ໃນໂຈດເຊິ່ງເຮົາສາມາດ exploit ໄດ້ໂດຍການ input ຄ່າລົບເຂົ້າໄປໃນຕອນ Buy Point ແລ້ວເຮົາກະຈະໄດ້ Point ມາຊື້ flag

  • Fuuusion ha!

ໂຈດບອກໃຫ້ເຮົາຫາສິ່ງທີ່ແຕກຕ່າງກັນລະຫວ່າງສອງຮູບ ໃນນີ້ພວກເຮົາໃຊ້ https://online-image-comparison.com/ ໃນການເອົາສອງຮູບມາ XOR ກັນເພື່ອຫາຄວາມແຕກຕ່າງ

ຫຼັງຈາກເຂົ້າເວັບມາແລ້ວໃຫ້ອັບໂຫລດສອງຮູບທີ່ໄດ້ມາແລ້ວກົດ Compare ແລະ ແລ້ວກໍຈະເຫັນ flag

  • Fasterrrrr

Exploit code:

Result:

PWN

  • Overflow 0

Exploit code:

Result:

CRYPTO

  • One of the Most Ancient

ຈາກທີ່ເບິ່ງເດົາວ່າຕ້ອງເປັນ Caesar Cipher ເຊິ່ງພວກເຮົາໃຊ້ https://cryptii.com/ ໃນການແກ້

  • V for Vi(ctory) ?

ໂຈດບອກວ່າ Cipher text ໂຕນີ້ຕ້ອງໃຊ້ secret key ທີ່ມີ 6 chars ໃນການ decode ເຊິ່ງນັ້ນໝາຍຄວາມວ່າມັນຕ້ອງເປັນ Vigenere Cipher ແນ່ນອນ, ແຕ່ເຮົາຮູ້ secret key ພຽງ 3 chars ສຸດທ້າຍ: KER ຈາກການສັນນິທານເດົາວ່າ secret key ເຕັມໆແມ່ນ HACKER
ໃນນີ້ພວກເຮົາໃຊ້ https://gchq.github.io/CyberChef/ ໃນການແກ້

  • Baby RSA

Exploit code:

Result:

WEB

  • Dessert

ເຂົ້າໜ້າເວັບມາຈະເຫັນເປັນໜ້າ Login Form ຫຼັັງຈາກລອງແກະເວັບແບບຄ່າວໆເຮົາຈະໄດ້ username & password ຈາກ comment ໃນ Inspect ເຊິ່ງເຮົາສາມາດໃຊ້ Login ໄດ້

ຫຼັງຈາກ login ສຳເລັດເຮົາຈະຍັງບໍ່ໄດ້ flag ໃຫ້ເຮົາປ່ຽນຄ່າ cookie ຈາກ admin = 0 ເປັນ admin = 1 ແລ້ວ refresh ໜ້າເວັບຈະເຫັນວ່າມີ flag ອອກມາ

  • Moo-Moo

ຫຼັງຈາກລອງຫຼິ້ນເວັບເຫັນວ່າບໍ່ວ່າເຮົາຈະປ້ອນຄ່າຫຍັງເຂົ້າໄປມັນຈະ return ຄ່າກັບມາຕາມທີ່ເຮົາປ້ອນໃນ <…> ຍົກເວັ້ນເຄື່ອງໝາຍດາວ (*) ແລະ single quote (‘)

ໃນກໍລະນີຂອງ single quote ແມ່ນຈະບໍ່ return ຄ່າຫຍັງກັບມາເລີຍ, ສ່ວນເຄື່ອງໝາຍດາວຈະເຫັນວ່າມີຊື່ file ໃນ working directory(/var/www/html/) return ກັບມາ ຕາມຮູບດ້ານລຸ່ມ ເຊິ່ງເດົາວ່າໜ້າຈະແມ່ນຊ່ອງໂຫວ່ OS Command Injection

ຫຼັງຈາກລອງເຂົ້າ script.sh ທີ່ໄດ້ຈາກຂ້າງເທິງຈະໄດ້ຫຍັງສັກຢ່າງມາແຕ່ເຮົາບໍ່ສົນ, ເຮົາໄປລອງ OS Command injection ກັນດີກວ່າ~
ຫຼັງຈາກລອງຢູ່ແປ່ບໜຶ່ງ ແລະ ແລ້ວເຮົາກະໄດ້ payload ທີ່ work!

and YES! we got flag~

  • LOG ME IN

ຫຼັງຈາກລອງງົມຢູ່ແປ່ບໜຶ່ງເຮົາກະເຫັນສິ່ງທີ່ໜ້າສົນໃຈ

SQLi!? lets try!

Exploit code:

Result:

FORENSICS

  • Baby Shark

ໃຊ້ wireshark ໃນການອ່ານ ເຫັນວ່າມີ packets ໂຄດຫຼາຍແຕ່ສັງເກດເຫັນວ່າ IP Source ກັບ IP Destination ບໍ່ວ່າຈະລົມກັນຜ່ານ protocol ໃດສ່ວນໃຫຍ່ຈະເປັນ IP ເກົ່າ, ຈາກຄຳໃບ້ flag ຈະເປັນ MD5 ຂອງ MAC Address ຂອງ Attack ເຊິ່ງນັ້ນໝາຍຄວາມວ່າເຮົາຕ້ອງຫາ MAC Address ແລ້ວນຳມາ hash ໃຫ້ເປັນ MD5

ເພື່ອເປັນການປະຫຍັດເວລາໃນການອ່ານ packets ເຮົາມາໃຊ້ filter ກັນດີກວ່າ~ ເຊິ່ງໃນນີ້ເຮົາຈະໃຊ້ eth.addr != MAC_Address ເພື່ອຕັດ MAC Address ທີ່ເຮົາໄດ້ລອງເອົາໄປ hash ແລະ submit flag ອອກເທື່ອລະອັນ

ແລະ ໃນທີ່ສຸດເຮົາກະໄດ້ MAC Address ຂອງ Attacker ມານັ້ນກະຄື 00:0c:29:20:bc:14 ນຳໄປ hash MD5 ຈະໄດ້ 77ae2cf4780e3d5a5c9c03bf858b004c ແລະ ນຳໄປໃສ່ໃນ flag format ກະຈະໄດ້ flag ນັ້ນເອງ

  • Log you

ເນື່ອງຈາກໂຈດໃຫ້ເຮົາຫາ flag ໃນ access.log ໂດຍທີ່ flag format ແມ່ນ LYH{…} ເຮົາເລີຍເປີດອ່ານແບບທຳມະດາແລ້ວໃຊ້ find word ໃນ notepad… and then we got flag.
LYH{w3bl0g_i5_th3_b3s7)

  • Nothing Last Forever

ຫຼັງຈາກແຕກ file zip ຈະໄດ້ chal3.raw ກັບ filescan.txt ມາ, ໃຊ້ວິທີຍອດຮິດຕາມຮູບດ້ານລຸ່ມ… ເນື່ອງຈາກວ່າເຮົາຮູ້ຢູ່ແລ້ວວ່າ flag format ແມ່ນ LYH{…} ແຕ່ Submit flag ແລ້ວຍັງບໍ່ຖືກຖ້າເຮົາສັງເກດດີໆຈະເຫັນວ່າ flag2 ຫຼື flag ພາກສ່ວນທີ່ 2 ເປັນຄຳແປກໆບໍ່ສາມາດອ່ານໄດ້ ຄິດວ່າໜ້າຈະເປັນ encoding ບາງຢ່າງ

ຫຼັງຈາກລອງເອົາໄປ decoding ຢູ່ດົນໃນທີີ່ສຸດກະໄດ້ເປັນຄຳທີ່ສາມາດອ່ານໄດ້ເກືອບໝົດທຸກຄຳໂດຍໃຊ້ rot13

ເອົາ flag ສອງສ່ວນມາຕໍ່ກັນ ແລະ ຕັດຄຳທີ່ອ່ານບໍ່ໄດ້ອອກນັ້ນກະຄື “vf” ແລ້ວເຮົາກະຈະໄດ້ flag ມານັ້ນກະຄື: LYH{v0l4t1l1ty_15_p0w3rful_th4n_y0u_th1nk_r1gh7}

MISC

  • Novice OSINT

ໃຫ້ເຂົ້າໄປບັນຊີ github ສ່ວນໂຕຂອງ 4ss3mbl3rV ເລືອກ Repositories ທີ່ມີຊື່ວ່າ LYHC2022 ແລ້ວເຂົ້າໄປກວດສອບ commit history ທີ່ມີຊື່ວ່າ remove some comment ກັບ remove some secret word ຈະເຫັນ flag ຢູ່ໃນນັ້ນ

  • Just an image

ໃຊ້ເຄື່ອງມື exiftool ໃນການກວດສອບ metadata ຂອງ file jpg ແລະ ເຮົາກະຈະໄດ້ flag ມາ

  • Split

ຫຼັງຈາກ Download file ໂຈດມາສັງເກດເຫັນຮູບ QR Code ທີ່ຖືກຕັດ/ບໍ່ສົມບູນ ກັບ 2 files data

ຈາກຄຳບັນຍາຍໂຈດທີ່ບອກວ່າເປັນກຸ່ມໄຟລ໌ແປກໆກັບໄຟລ໌ທີ່ບໍ່ສົມບູນທີ່ໄດ້ມາ ເລີຍລອງນຳທັງສາມໄຟລ໌ມາລວມກັນໂດຍໃຊ້ຄຳສັ່ງ Linux cat 1 2 3 > 4

ເຫັນວ່າຈະໄດ້ໄຟລ໌ໃຫມ່ມາເຊິ່ງເປັນ QR Code ໃຫ້ນຳໄປ Scan

and this is how we got those flags.

ຂໍຂອບໃຈຖ້າທ່ານອ່ານຈົນຈົບຖ້າຜິດພາດປະການໃດສາມາດຕິຊົມ ແລະ ແບ່ງປັນຄວາມຮູ້ນຳກັນໄດ້ເດີ ແລ້ວພົບກັນໃນ writeup ຕໍ່ໄປ

ບະ ບາຍ~

--

--

JocKKy
LaoHacker

HELLO!! THIS is JOCKKY!, HE is a boy who REALLY LOVEs Drinking MILK... || Discord: jockky