Format String (part1)

1. Knowledge

 printf("%s", input) => in ra chuỗi input (tham số đầu tiên sau format string)

printf("%s") => in ra 1 giá trị chuỗi nào đó tại tham số đầu tiên - địa chỉ thứ 1(tính từ 0) trên stack (32bit)

Còn đối với kiến trúc 64 bit, tham số đầu tiên sẽ không nằm trên stack mà nó sẽ năm hết trên thanh ghi sau đó mới ghi đến stack.

printf("%30$s") => in ra địa chỉ chuỗi tại tham số thứ 30

- địa chỉ thứ 30 (tính từ 0) trên stack (32bit)

printf("%6$p") => in ra giá trị tại tham số thứ 6

(địa chỉ or giá trị) dưới dạng 0x? thập lục phân

printf("%6$x") => in ra giá trị tại tham số thứ 6

(địa chỉ or giá trị) dưới dạng thập lục phân (không có 0x)

2. Hướng exploit

- Có thể tự do in ra 1 địa chỉ nào đó trong vùng nhớ (stack) của chương trình ("%6$x", "%22$p")

- Có thể tự do in ra 1 giá trị chuỗi kí tự nào đó tại một địa chỉ trong vùng nhớ của chương trình ("%30$s")

- Có thể thay đổi giá trị tại 1 địa chỉ nào đó đã biết trong chương trình ("%8$n", "%15$hn", "%16$hhn")

I. Overview


=> No Shellcode, no insert onto stack, address fixed.

Dòng 32 nói rõ hướng khai thác của chương trình. 
Trước tiên thì mình sẽ đi tạo 1 file flag.txt
Và chúng ta có thêm 3 hàm sau đây trong chương trình



II. Analysis

Nhìn vào chương trình kia thì các bạn cũng sẽ biết lỗi nó nằm ở hàm nào. Sau đó disassembly hàm đó và đặt breakpoint tại hàm print()
   

Sau đó thực hiện leak địa chỉ như ở phần knowledge. Đầu tiên mình thử với %x để leak:

Và kết quả mình nhận được:

Sau đó mình thử tiếp với nhiều %x hơn:
    
Và kết quả mình nhận được: 
    

Giá trị leak được này gần như trùng với giá trị mà bạn thấy trên stack ở đây
Bạn đã thử tách giá trị mà mình leak được kia ra chưa ? Đó là | a | 4 |  565556f9 |
Vậy là bạn có thể leak được giá trị stack từ đầu đến cuối :))
Kiểm tra stack với stack 50
thì phát hiện nội dung mà tôi đã nhập nó vào file flag.txt ở trên stack. Nên tôi sẽ thực hiện đếm và leak đến kí tự đó

III. Exploit


Và kết quả nhận được:

So easy because it has 32bit architecture :)))

write by Kinabler









Comments

Popular posts from this blog

LACTF2023 - MISC

NOP (No Operation)