PwNo0b

###Yêu cầu cần thiết

  • Có nền tảng cơ bản về ngôn ngữ Assembly, C (python càng tốt)
  • Biết dùng các loại tool như: IDA, OllyDBG, GDB, radare2,…
  • Kiên trì trước mỗi chal mà ta gặp, nếu đã làm đủ mọi cách mà không solve được thì xem writeup, xem xong phải làm lại sau đó thì có 2 cách
  1. Tìm kiếm những chal khác có tương tự lỗi như vậy và khai thác nó
  2. tự mình viết code C rồi dịch sang assembly để solve
  3. Solved rồi thì các bạn hãy tự nghiệm lại những gì mình học được thông qua chal rồi hãy viết writeup về chal đó cho dù chal đó đã có hàng tá writeup tương tự trên mạng, nhưng vì cái này là bạn viết dành cho bạn nên đâu cần ngại ngùng gì?
  • Nên lập mục tiêu cho bản thân mình VD: 1 ngày ít nhất phải solved 1 chal
  • Quan trọng nhất: Biết tra google

###Knowledge

$ASSEMBLY

$STACK

  • kernel là nơi ta thực hiện command-line param , là cái mà được pass vào chương trình (program) và biến môi trường (environment variable)
  • text là nơi chứa mnemonics, instruction
  • data là nơi chứa biến chưa khởi tạo giá trị (uninitialized variables) và biến đã khởi tạo giá trị (initialized variables)
  • heap là nơi chứa các loại data lớn như images, files,…
  • stack là nơi chứa biến local cho các hàm (function). Khi 1 function được gọi, những biến này sẽ đẩy vào cuối stack

$giải thích quá trình Buffer Overflow

void main(){
char buf[32];
gets(buf);
printf("you typed: %s",bùf);
}
0x0000000000001145 <+0>: push   rbp
0x0000000000001146 <+1>: mov rbp,rsp
0x0000000000001149 <+4>: sub rsp,0x20
0x000000000000114d <+8>: lea rax,[rbp-0x20]
void win(){
printf("you did it!");
}

$format string

#chức năng

  • nó sẽ convert datatypes đơn giản trong ngôn ngữ C thành 1 chuỗi đại diện cho datatypes đó
  • nó cho phép xác định định dạng của chuỗi được đại diện
  • process the resulting string (output to stderr, stdout, syslog, …) (dòng này khó dịch quá LOL)

#cách thức hoạt động

  • format string dùng để control các động thái mà 1 hàm có thể xảy ra
  • nó sẽ xác định loại input mà ta nhập vào như thế nào, sau đó mới in nó ra
  • các input đó (hay còn gọi là parameters) được push vào stack của chương trình
  • được lưu 1 cách trực tiếp (giá trị), hay gián tiếp (địa chỉ)\

#sự liên quan của stack đối với format string (FS)

#format string vulnerability

Related:

những page có thể luyện pwnable:

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Nguyễn Tín

Nguyễn Tín

a loner

More from Medium

Bifurcation One: chapter eleven

Between a Rock and a Hard Place

Mytho Glyphs

✶ Celestial Dreams ✶