Start - pwnalbe.tw


Như đã nói thì đây sẽ là bài đầu tiên trong seri pwnable của tôi.

Trước tiên vào bài tôimuốn các bạn đọc qua một chút về shellcode và dưới đây là link bài viết của anh Thái (vnhacker) viết về shellcode, dù nó không được chi tiết nhưng mình nghĩ nó đủ để mọi người có hứng thú với những gì mà chúng ta sắp đề cập tới.
Ngoài ra tôi nghĩ mọi người có thể tìm đọc nhiều hơn nữa ở trên google, sau đó quay lại đây và cùng làm bài này với tôi.

Start - File - nc chall.pwnable.tw 10000

Theo tôi nghĩ thì đây là một bài khá cơ bản, nhưng cái khó ở đây là nó được viết bằng assembly nên với ai không hiểu về assembly thì có lẽ sẽ không làm được bài này.
Nhìn vào đoạn code trên ta thấy bài này cơ bản in ra màn hình một xâu được push vào stack và cho phép chúng ta nhập vào stack 60 byte sau đó sẽ return.
Trên kia là chương trình đã được chạy.
Với bài này ban đầu tôi nảy ra ngay một ý tưởng khi nhìn thấy dòng sau: 
add esp, 14h
retn
Ý tưởng của mình đó là đưa shellcode vào chương trình và đưa địa chỉ của shellcode vào vị trí được trỏ bởi esp sau lệnh "add ebp, 14h"
Nhưng một vấn đề khác được đặt ra là chúng ta không hề biết địa chỉ của stack như thế nào thì sao có thể biết được địa chỉ của shellcode.
Lúc này tôi lại nhìn thấy dòng code "push ebp" tức là địa chỉ của ebp đã được đưa vào trong stack tại địa chỉ cao hơn địa chỉ "exit" là địa chỉ kết thúc của hàm.
Vậy làm thế nào để in ra địa chỉ của ebp, tôi nghĩ ngay đến việc cho chương trình chạy đến địa chỉ 0x08048073 để in ra địa chỉ của ebp và để quay lại một lần nữa để đưa shellcode và địa chỉ của nó vào chương trình tôi đã call đến đầu chương trình một lần nữa tại địa chỉ 0x08048060.
Sau đó thật đơn giản để đưa được shellcode và địa chỉ của nó vào stack.
Dưới đây là lời giải của mình, mình chỉ up ảnh ko up code vì không muốn mọi người copy pase.

























Hãy thử nó và chúc mọi người thành công!
__________________________________________________
Nếu hay hãy share để ủng hộ mình nhé còn nếu thấy chỗ nào đó chưa ổn mọi người cmt cho mình nhận xét để mình rút kinh nghiệm, chúc mọi người học tập vui vẻ.
Hẹn gặp lại trong bài tiếp theo nhé!!
-Chung-

Comments

Popular posts from this blog

Exploit deaslr through _dl_runtime_resolve

WriteUp PWN 500pts - PwC Hackaday

[Night St0rm CTF] - WRITE UP PWN