Writeup cho 2 bài pwn của vòng loại SVATTT 2017
Đề bài pwn400 năm nay hơi fail, khi mà cách giải của người chơi không được đúng ý tác giả. Còn bài pwn100 khá hay, là lỗi format string hay gặp, tuy nhiên nằm ở snprintf chứ không phải printf. Khá ít đội làm được bài pwn100 do chưa quen với snprintf.
Bài pwn400
Theo ý của tác giả, thì để giải bài này, người chơi cần phải viết được con shellcode chỉ dùng các ký tự printable. Tuy nhiên, cách giải đơn giản chỉ là viết rop, gọi tới hàm get_string với tham số là địa chỉ vùng ghi được, và nhảy luôn tới đó.
Mã khai thác:
Bài pwn100
Lỗi format string cơ bản, với hàm bị lỗi là snprintf. Tác giả chỉ cho xâu format dài 0x7F byte, do đó ta không thể ghi đè dữ liệu thoải mái được. Tuy nhiên, để biến atoi thành system, thì ta chỉ cần ghi đè 4 byte thấp của atoi thành 4 byte thấp của system là được. Và với 0x7F byte thì ta hoàn toàn làm được.
Mã khai thác:
Link tải đề bài và mã khai thác: pwn_vongloai_svatt2017.zip
Bài pwn400
Theo ý của tác giả, thì để giải bài này, người chơi cần phải viết được con shellcode chỉ dùng các ký tự printable. Tuy nhiên, cách giải đơn giản chỉ là viết rop, gọi tới hàm get_string với tham số là địa chỉ vùng ghi được, và nhảy luôn tới đó.
Mã khai thác:
Bài pwn100
Lỗi format string cơ bản, với hàm bị lỗi là snprintf. Tác giả chỉ cho xâu format dài 0x7F byte, do đó ta không thể ghi đè dữ liệu thoải mái được. Tuy nhiên, để biến atoi thành system, thì ta chỉ cần ghi đè 4 byte thấp của atoi thành 4 byte thấp của system là được. Và với 0x7F byte thì ta hoàn toàn làm được.
Link tải đề bài và mã khai thác: pwn_vongloai_svatt2017.zip
Chỉnh sửa lần cuối bởi người điều hành: