Post

Hutech CTF Newbie 2023 Writeup

Hi, vừa rồi CLB ATTT của trường HUTECH vừa tổ chức giải CTF dành cho tân sinh viên và mình cũng giải được vài challenges trong đó. Dưới đây là writeup về những bài mình đã giải được

WELCOME

WELCOME

welcome

Bài này như là Sanity Check với nhắc cho mọi người về format của flag thôi

Flag: HUTECH_CTF{Some_Thing}

Web

P1NG

p1ng

Truy cập thì mình thấy giao diện của “Ping Tool”, điều này đã gợi nhớ cho mình về 2 ping challenges của Cookie Hân Hoan (Ping 0x01, Ping 0x02) và thực sự cách giải bài này cũng giống vậy

Đầu tiên khởi động Burp Suite, bật intercept để bắt request rồi chuyển sang tab Repeater để test cho tiện

Vì mình chắc 10 tỷ phần trăm đây là lỗi Command Injection, nên mình sẽ chèn command bằng cách thêm các ký tự như ;, &&, || + với command thực thi

1
127.0.0.1;ls

Don't hack me

Tới đây thì ta thấy web đã lọc hết các ký tự đó, tuy nhiên có vẻ nó không lọc tất cả mà vẫn còn sót lại dấu xuống dòng (như 2 ping challenge mình nhắc ở trên). You know what to do next =))

flag.txt

Chỉ với command ls / là có thể thấy ngay file flag.txt. Giờ ta chỉ cần cat /flag.txt nữa là xong

Flag: HUTECH_CTF{You_are_master_CMD_Injection}

Note

Thật ra mình chỉ chạy ls / theo thói quen, vì flag thường sẽ nằm ở đây hay trong directory của user

Nhưng nếu không có thì mình sẽ chạy env để check hoặc tìm hết bằng command find / -name flag* 2>/dev/null

R0T M0N

r0t m0n

Sau khi vào web và click thử vào button “View”, mình nhận ra web sẽ hiển thị các hình ảnh bằng cách truy cập file ctdl.png thông qua endpoint file_name

file_name

Đến đây thì mình khá chắc đây là lỗi Path Traversal nên mình đã thử thay ctdl.png thành ../etc/passwd

Tuy kết quả trả về là “404 Not Found” nhưng đây lại là tín hiệu khả quan cho thấy endpoint này bị dính bug

Khi mình thử đến ../../../../etc/passwd, kết quả trả về không còn là 404 nữa mà lại là thông báo lỗi. Điều này có thể giải thích vì nó chỉ dùng để hiển thị hình ảnh nên khi render file text sẽ xuất hiện lỗi

Mà nếu đã không xem được trên web thì ta tải xuống xem thôi

1
wget http://hutechctf.notrespond.com:8898/view.php?file_name=../../../../etc/passwd

flag

Flag: HUTECH_CTF{You_are_Hacker_101}

Reverse

HUTECHRev2

HUTECHRev2

Bài này chỉ cần tải file về rồi mở Ghidra lên để analyze file là thấy ngay flag, cũng không đáng để viết writeup lắm

Ngoài ra còn cách khác tà ma hơn là chạy command strings Password.exe | grep HUTECH_CTF{ nhưng cái này chỉ áp dụng được với mấy bài dễ thôi

Flag: HUTECH_CTF{Wellcome_Learn_Reversing}

Crypto

Classic_and_basic

Classic_and_basic

RSA_Basic.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from Crypto.Util.number import getPrime, bytes_to_long

bits = 150
p = getPrime(bits)
q = getPrime(bits)
e = 65537
N = p*q
m = 0

with open('flag.txt', 'rb') as f:
    m = bytes_to_long(f.read())

c = pow(m, e, N)

print('p=', p)
print('e=', e)
print('N=', N)
print('c=', c)

output.txt:

1
2
3
4
5
6
*No hint

N= 944277460928218727444425796671228006440681423958756385944259965777648467343805051250778307
p= 1187132467668222120649135047910661042340315271
e= 65537
c= 509304373433095933741721585884760854821638120979366068441534204508880522869949802723478795

Bài này sử dụng hàm số Euler để decrypt, nhưng chi tiết thì mình không thật sự hiểu do mình chỉ copy code từ Google về chạy :(

solve.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from Crypto.Util.number import long_to_bytes

N= 944277460928218727444425796671228006440681423958756385944259965777648467343805051250778307
p= 1187132467668222120649135047910661042340315271
e= 65537
c= 509304373433095933741721585884760854821638120979366068441534204508880522869949802723478795

# N = p * q
q = N // p
# Euler's totient function (phi(N))
phi_N = (p - 1) * (q - 1)
# d * e ≡ 1 (mod phi_N)
d = pow(e, -1, phi_N)
m = pow(c, d, N)
flag = long_to_bytes(m)
print('The flag is:', flag.decode('utf-8'))

Flag: HUTECH_CTF{RSA_is_great_encryption}

Mấy bài khác thì mình chịu nhưng mình sẽ update thêm nếu giải ra ._.

References:

Đây là 2 challenges của Cookie Hân Hoan dành cho bạn nào muốn làm thêm:

Path Traversal:

This post is licensed under CC BY 4.0 by the author.