PWN/bot write-up LACTF2023

[DANGEROUS]: Cảnh báo bài này là 1 bài rất chi là "bịp" không được hỏi người viết tại sao 🙂 

PWN/BOT

I. Overview

Firstly, Overview code c: 
        
Bạn có thể thấy ở dòng 11 có 1 lỗi Stack Overflow. Và việc của bạn cần là by pass để gọi được system ra?
No, no, no. Bạn không sai ==> Chúng ta sai

Như bạn đã biết thì 1 chương trình c có điều kiện if-else cơ bản sẽ như sau:
        

thì khi mà conditions thỏa mãn thì nó sẽ dừng vòng lặp if-else và câu lệnh return 0 sẽ được gọi right ??
1 vấn đề nữa trước khi chúng ta bắt đầu vào phân tích đó là nếu bạn ko return 0 thì chương trình mặc định vẫn sẽ làm điều đó thay bạn.
       
    Oke, let's go. Bạn đã thử nhìn vào chương trình trên và thấy điều bất thường chưa :>?.
    Câu lệnh exit(1) mà tôi thấy ở dòng thứ 31 nó được định nghĩa trên manual page:
        

    Hơi, đi ngược logic 1 tí, nhưng mà khi bạn nhìn nó trong ghidra bạn sẽ hiểu tại sao chúng ta cần làm những điều trên.

II. Analysis       

    Sau khi nhìn pseudo code của nó trên ghidra bạn cũng hiểu bài này nên đi theo hướng nào rồi.
    Đó là Ret2Libc. Nếu bạn còn chưa rõ về lỗi này hãy tham khảo 2 bài blog khác của tôi: ret2win (part2) và ret2win (part 1)
    Thì việc đầu tiên cần làm đó là phân tích hàm main của nó. Tôi cũng không hiểu tại sao khi tôi dùng debugger gdb-peda thì nó lại có hàm system trong đó, còn khi dùng ghidra thì nó lại bị ẩn đi.
    Thì theo như ghidra chúng ta cần lấy được địa chỉ của hàm system:

            system_call_address = 0x000000000040129a 

    Xác định số byte từ argument đến stack(rsp):

            arg_addr = 0x7fffffffde20

            


    Thì khi mà bạn thỏa mãn condition thứ nhất của nó, nó sẽ đưa bạn đến ret instruction. Tại đây nó sẽ lấy địa chỉ ở đỉnh stack ra để gọi ==> rsp_addr = 0x7fffffffde68
        ==> Như vậy ta cần overwrite 72 byte (bao gồm cả text thỏa mãn điều kiện thứ nhất và 1 byte để strcmp kết thúc) trước khi muốn chèn địa chỉ lệnh cần thực thi vào đó.

Check again: 

    Done: 


Việc cuối cùng của chúng ta đó chính là exploit.

III.Exploit

Payload: 


Và đây chính là kết quả.....


            Goodluck, mong mn không gặp lỗi như mình nữa.

            

write by Kinabler

Comments

Popular posts from this blog

LACTF2023 - MISC

NOP (No Operation)