NACTF 2019 — BufferOverflow#1

lần đầu có được 1 nguồn bài tập pwn đáng tin cậy nên có thể solve được
link cho ai cần học pwn cơ bản

bắt đầu vào công việc thôi;

$Clues

source code:

theo như ta thấy thì biến buf tối đa 16 ký tự và đặc biệt hơn đó chính là hàm gets vì:

theo như source thì hàm win chính là nơi ta cần đến.

#Hiểu sơ về stack

stack hoạt động theo phương thức LIFO, thằng nào vô cuối thì thằng đó ra đầu tiên

như trên hình thì ta coi đỉnh stack nằm phía trên cùng vậy thì value AAAA chính là value cuối cùng vào đỉnh stack, cho nên cũng chính là value được pop ra đầu tiên

vậy việc overflow có thể hiểu đơn giản như thế này: ta có 1 chồng stack như sau

ta push thật nhiều value vào stack dẫn đến việc số 0 bị ghi đè lên nó chính được gọi là bufferoverflow

(nguồn từ LiveOverflow)

vì đây là dạng bài return addr nên ta hãy xem qua đây để rõ hơn

$Hacking

ta dùng radare2 để check địa chỉ của hàm win

ta có thể thấy được hàm win có addr là 0x080491b2 giờ ta hãy đổi nó sang Little endian

\xb2\x91\x04\x08

vì buf max = 16 kí tự nên script ta thành

python -c “print 'A'*(24+4) + '\xb2\x91\x04\x08'”|nc shell.2019.nactf.com 31462

#giải thích con số4

khi ta disass hàm vuln để ý đến đoạn này:

nó chính là giá trị của biến buffer trong source. 0x18=24 còn số 4 chính là số byte của return addr còn đang nằm trong stack

happy hacking!

a loner