+1

Write up level 1 - PTITCTF [pwn]

Write-up PTIT CTF 2023

Level 1

image.png
Việc đầu tiên là mình sẽ check xem file của nó thuộc loại nào.
image.png
Mình sẽ dùng ida64 để đọc pseudo code của bài từ file 64bit này.
image.png.
Nhìn qua thấy key word của bài là ở dòng 21 xor[i] = source[i] ^ someThing[i]; , check source thấy được data của nó db '>R!+Q.VEHr',0 .
Và để vào được hàm system("cat flag") ta cần xor với IamHaCer!! để có được biến someThing đúng..
image.png.
image.png.
Và đây là những thứ chúng ta cần hoàn thiện nốt: .
image.png.
và cuối cùng thì nó có flag là như này: PISCTF{My_M1nd_50_3z_RI9ht_?}

Level 2

image.png
Việc đầu tiên là mình sẽ check xem file của nó thuộc loại nào. bủh
image.png
Bủh, ta thấy ngay lỗi format string ở hàm printf(v4) do nó không format đầu ra cho v4 nên có thể nghĩ ngay đến lỗi này.
Mọi công đoạn thì bài này có vẻ lặp lại ở bài 1. Mình cũng hơi lú vì spam %x%p hơi nhiều mà méo ra gì cuối cùng thì nó là %s
Mình sẽ rút kinh nghiệm ở những lần làm bài sau 🥲
Chi tiết hơn thì %x sẽ leak cho bạn đầu ra là hex còn %p sẽ leak cho bạn địa chỉ
image.png
Và kết quả cuối cùng thì nó là như này
ISCTF{W3ll_w311_Y0u_4re_4_BAD_b0y_0r_g1rL_<:}

Giải thích về lỗi Format strings

Lỗi này khá là nguy hiểm tương đương với Buffer OverFlow. Khi một chương trình có lỗi này, hacker có thể leak dữ liệu.
Format string là string dùng để format trong các hàm: printf, fprintf, ...
Vd: printf("a1", a3) thì a1 là format string

Một số kiểu format đáng chú ý:

  • %s: In ra xâu được trỏ bởi tham số.
  • %x: In ra tham số ở dạng hex.
  • %p: In ra tham số ở dạng con trỏ.

Lỗ hổng format string

Hãy xem qua ví dụ dưới đây.
Bình thường ta hay dùng hàm printf như sau:

printf("Hello %s", name);

Nhưng nếu dùng như dưới đây:

#include<stdio.h>
#include<string.h>

int main(){
    char input[64];
    gets(input);
    printf(input);
    return 0;
}

Compiler nó:

gcc fmtString.c -o fmtString

Ta sẽ thử nó với option%s đầu tiên:
image.png
Lập tức nó gặp lỗi Segmentation fault
Tiếp theo thử với option %x:
image.png
image.png
Cuối cùng thì thử với option %p:
image.png
image.png
Thường thì %p sẽ leak cho hacker các địa chỉ trên stack
Đó chính là lỗi format string.

Hai bài này khá là basic để tìm hiểu về các vuln cơ bản, có thể làm bài warmup tốt :>>.
Khởi đầu 1 năm mới tiếp theo. Chúc toàn thể mem viblo đạt được nhiều thành công và gặt hái được nhiều thành tựu trong năm 2023. Đây cũng là bài viết đánh dấu sự khởi đầu của mình. Cảm ơn mọi người đã đọc!!.
Mãi yêu 🫶🧨
wu by 0nly^y0u


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí