Braggart
Đây là một challenge pwn x web khá thú vị. Chúng ta được cung cấp một link và khi bấm vào link đó sẽ hiện như sau:
Click vào backup sẽ cho ta một binary. Decompile file binary đó thì ta biết được nó là thành phần back-end xử lý gói tin request tới khi ta xem hàm printMain:
Chương trình thực thi khá nhiều hàm getenv nhưng ta thấy có một vài hàm lấy chuỗi bắt đầu với HTTP_, đây có thể được xem là header của gói tin request. Do đó ta sẽ dùng burpsuite để có thể thêm bớt một cách dễ dàng. Sau một hồi tìm kiếm bug, ta thấy trong hàm printDebugInfo có lỗi Buffer Overflow khi thực hiện strcpy với dữ liệu là User-Agent:
Biến dest nằm ngay trên biến format, do đó nếu nó overflow, ta hoàn toàn có thể thay đổi format của biến format để thực thi format tùy ý --> Format String. Để tìm offset phù hợp, ta sẽ cùng debug chương trình này và thiết lập các biến môi trường phù hợp để có thể đi vào hàm printDebugInfo của printMain: