Writeup - Contest 13 - Phu Quoc island

tmnt53

VIP Members
25/04/2015
98
132 bài viết
Writeup - Contest 13 - Phu Quoc island
Trong cuộc thi Contest13 vừa rồi, mình thấy có một bài pwn khá hay, khi giới thiệu phương pháp ROP trên VDSO, đó là bài “Phu Quoc island” start_nx_64_add_stack. Mã assembly của chương trình thì rất đơn giản. Chương trình in ra dòng chữ “Welcome to my CTF. Input your weapon: ” và cho phép nhập vào ký tự, ghi đè lên địa chỉ trả về.

vm.PNG

Lỗi rõ ràng như vậy, nhưng việc khai thác lại không dễ. Chương trình bật NX (trên stack, trên module chính), nên ta phải dùng tới ROP mới bật được shell. Tuy nhiên, chương trình không nạp vào libc, mà chỉ có VDSO. Do đó, ta chỉ có cách sử dụng ROP trong module chính và trong VDSO thôi.

start.png

Trên server bật ASLR, nên ta còn phải tính tới việc leak ra địa chỉ của vdso trước khi đưa ROP vào nữa. Theo như http://man7.org/linux/man-pages/man7/vdso.7.html, ta có thể lấy được địa chỉ của nó trên stack. Trong mã khai thác, sử dụng hàm getVDSO -> địa chỉ vdso. Và ta có image của vdso do ta ssh được lên server. Vậy phần khó còn lại là viết ROP thôi. Sau đây là mã khai thác:
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: whf and sunny
Thẻ
writeup
Bên trên