ສະເຫຼີຍໂຈດ need for speed ຈາກ picoCTF2019

Fr!d4y
2 min readMar 19, 2020

--

ສະບາຍດີຜູ້ອ່ານທີ່ໜ້າຮັກທຸກຄົນຈາກທີ່ຜູ້ຂຽນໄດ້ພາຜ່ານໂຈດ droids ໄປແລ້ວຕໍ່ມາ ມາເບິ່ງໂຈດ Need For Speed ກັນຕໍ່ ເຊິ່ງໂຈດຂໍ້ນີ້ກໍຍັງຢູ່ໃນໝວດ Reverse Engineering ຄືເກົ່າເນາະ.

ໃນໂຈດຈະໃຫ້ໄຟລ binary ອັນໜຶ່ງມາເມື່ອລອງ execute ເບິ່ງກໍຈະໄດ້ຫຍັງມາປະມານນີ້

ມັນບອກວ່າ Not fast enough ແລ້ວກະ BOOM!!!!!!!!!!

ເອົາ binary file ໄປເປີດໃນ ghidra ແລ້ວເບິ່ງຂັ້ນຕອນການເຮັດວຽກຂອງມັນ

ໃນ function main ຈະເຫັນວ່າມັນມີການເອີ້ນໃຊ້ຢູ່ 4 function ແຕ່ function ທີ່ໜ້າສົນໃຈແມ່ນ print_flag

ໃນນີ້ມັນກໍຈະມີການຄຳນວນຫຍັງບາງຢ່າງທີ່ຈະເປັນ flag ແຕ່ກ່ອນທີ່ຈະໄດ້ flag ແມ່ນເຮົາຕ້ອງໄດ້ຄ່າຂອງ key ກ່ອນ ເຊິ່ງຄ່າຂອງ key ແມ່ນໄດ້ມາຈາກ function get_key

ແຕ່ວ່າກ່ອນທີ່ຈະມາເຮັດວຽກໃນ function get_key ແມ່ນມັນຈະໄປເຂົ້າ function set_timer ກ່ອນ

ເຊິ່ງໃນນີ້ແມ່ນມັນຈະເຮັດຫຍັງບາງຢ່າງແລ້ວກະອອກໂປຣແກຣມເລີຍ ສະນັ້ນເຮົາຕ້ອງຫາວິທີ ທີ່ຈະຂ້າມ function ນີ້ໄປ.

ເຊິ່ງຜູ້ຂຽນແກ້ໂດຍການໃຊ້ gdb ເລີ່ມຈາກການ break main ແລ້ວເບິ່ງວ່າໃນ main ມັນເຮັດຫຍັງແນ່

ກໍຄືກັບທີ່ເຮົາເບິ່ງມາໃນ ghidra ກ່ອນນີ້ເນາະຊັ້ນເຮົາກະມາ set breakpoint ທີ 2 ຢູ່ບ່ອນທີ່ມັນຈະ call set_timer ກັນເລີຍ

ຈາກນັ້ນກໍ set rip ໃຫ້ໄປທີ່ set_timer ແລ້ວກໍປ່ອຍໃຫ້ມັນເຮັດວຽກໄປເລີຍແລ້ວກໍຈະໄດ້ flag ອອກມາ

PICOCTF{Good job keeping bus #079e482e speeding along!}

--

--