Skip to content

Commit 54d3e14

Browse files
committed
[2026-02-21]: Update notes
1 parent 3f54cc0 commit 54d3e14

File tree

1 file changed

+16
-42
lines changed

1 file changed

+16
-42
lines changed

content/posts/STH Mini Web CTF 2025.md

Lines changed: 16 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -18,97 +18,71 @@ Target : [https://web1.ctf.p7z.pw](https://web1.ctf.p7z.pw)
1818

1919
![](https://cdn-images-1.medium.com/max/800/1*MIA-GGdTygl9TsJOnUpJFg.png)
2020

21-
หลังจากเข้าเว็ปมาก็จะเห็นหน้า login
21+
หลังจากเข้าเว็ปมาก็จะเห็นหน้า login ซึ่งเราไม่มี username, password แล้วเราจะ login ได้ยังไง ?
2222

23-
ซึ่งเราไม่มี username, password แล้วเราจะ login ได้ยังไง ?
24-
25-
ขั้นตอนแรกเรามารวบรวมหาข้อมูลให้มากที่สุดก่อน (Information Gathering)
26-
27-
เริ่มจากลอง inspect หน้าเว็ปดูเผื่อจะเจออะไร
23+
ขั้นตอนแรกเรามารวบรวมหาข้อมูลให้มากที่สุดก่อน (Information Gathering) เริ่มจากลอง inspect หน้าเว็ปดูเผื่อจะเจออะไร
2824

2925
![](https://cdn-images-1.medium.com/max/800/1*dqASwHKhA-0YkurFc0i-1w.png)
3026

31-
เมื่อลองดูใน Source code เราจะเห็น comment ของ credentials อยู่ คือ username และ password
32-
33-
ลองเอา username และ password ที่ได้มา login ดู และ ติ๊ก Remember Me ด้วย
27+
เมื่อลองดูใน Source code เราจะเห็น comment ของ credentials อยู่ คือ username และ password ลองเอา username และ password ที่ได้มา login ดู และ ติ๊ก Remember Me ด้วย
3428

3529
![](https://cdn-images-1.medium.com/max/800/1*qBCMf8ulCnAjzEl_uYdSWg.png)
3630

37-
หลังจาก login แล้ว เราจะเห็นว่ามีข้อมูลเกี่ยวกับการ login ของเราขึ้นมา
38-
39-
คือ username “test”, Role “user”
31+
หลังจาก login แล้ว เราจะเห็นว่ามีข้อมูลเกี่ยวกับการ login ของเราขึ้นมา คือ username “test”, Role “user”
4032

4133
![](https://cdn-images-1.medium.com/max/800/1*V9pCf388lfTMN3p6CzXecA.png)
4234

43-
แต่ใน Flag นี้เราจะต้อง login ด้วย Admin user แล้วเราจะสามารถ login ด้วย Admin ได้ยังไง ?
44-
45-
ลอง inspect หน้าเว็ปดูอีกรอบเผื่อจะมีอะไรซ่อนอยู่อีก
35+
แต่ใน Flag นี้เราจะต้อง login ด้วย Admin user แล้วเราจะสามารถ login ด้วย Admin ได้ยังไง ? ลอง inspect หน้าเว็บดูอีกรอบเผื่อจะมีอะไรซ่อนอยู่อีก
4636

4737
![](https://cdn-images-1.medium.com/max/800/1*tPAnEqOqZCeNaFMxgSg_BQ.png)
4838

4939
เมื่อลองส่องๆดูเราจะเห็นไฟล์ javascript “script.js” และเราเห็นว่าในไฟล์นี้มี function อยู่ 2 function คือ
5040

51-
**debugFetchUserTest()**
41+
**debugFetchUserTest()** - function นี้จะทำการ fetch data จาก **api.php?action=get_userinfo&user=test**
5242

5343
![](https://cdn-images-1.medium.com/max/800/1*XEHSmAeddFaafO57Y1d9Ng.png)
5444

55-
function นี้จะทำการ fetch data จาก **api.php?action=get_userinfo&user=test**
56-
57-
ลองยิง api ไปที่ endpoint นี้ดู
5845

59-
https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=test
46+
ลองยิง api ไปที่ endpoint นี้ดู `https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=test`
6047

6148
ผลลัพธ์ที่ได้ :
6249

6350
![](https://cdn-images-1.medium.com/max/800/1*RjiFslSA3qieWE09l66fAQ.png)
6451

65-
แสดงว่า function นี้เป็น function ที่ทำหน้าที่ดึงข้อมูลของ user นั้นๆ
66-
67-
ทีนี้ลองไปดูอีก function ว่ามันทำอะไรได้บ้าง ?
52+
แสดงว่า function นี้เป็น function ที่ทำหน้าที่ดึงข้อมูลของ user นั้นๆ ทีนี้ลองไปดูอีก function ว่ามันทำอะไรได้บ้าง ?
6853

69-
**debugFetchAllUsers()**
54+
**debugFetchAllUsers()** - function นี้จะทำการ fetch data จาก **api.php?action=get_alluser**
7055

7156
![](https://cdn-images-1.medium.com/max/800/1*ztm59x3xqb5ipCb0fzgnHA.png)
7257

73-
function นี้จะทำการ fetch data จาก **api.php?action=get_alluser**
74-
75-
ลองยิง api ไปที่ endpoint นี้ดู
76-
77-
https://web1.ctf.p7z.pw/api.php?action=get_alluser
58+
ลองยิง api ไปที่ endpoint นี้ดู `https://web1.ctf.p7z.pw/api.php?action=get_alluser`
7859

7960
ผลลัพธ์ที่ได้ :
8061

8162
![](https://cdn-images-1.medium.com/max/800/1*2nzCK4WD1WhV1tRgjVCayQ.png)
8263

8364
แสดงว่า function นี้เป็น function ที่ทำหน้าที่ fetch user ทั้งหมดในระบบ
8465

85-
จากผลลัพธ์ของ function **debugFetchAllUsers()**
86-
87-
เราจะเห็นว่า มี user อยู่อีก 1 user ซึ่งอาจจะเป็น admin user
88-
89-
เราจะลองเอา username นี้ไปยิง api เพื่อขอข้อมูลของ user ดู
66+
จากผลลัพธ์ของ function **debugFetchAllUsers()** เราจะเห็นว่า มี user อยู่อีก 1 user ซึ่งอาจจะเป็น admin user เราจะลองเอา username นี้ไปยิง api เพื่อขอข้อมูลของ user ดู
9067

91-
https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=admin-uat
68+
`https://web1.ctf.p7z.pw/api.php?action=get_userinfo&user=admin-uat`
9269

9370
ผลลัพธ์ที่ได้ :
9471

9572
![](https://cdn-images-1.medium.com/max/800/1*iKnZgCthfsCiMGCq0L4vuw.png)
9673

97-
ดูจากข้อมูลนี้เราจะเห็น remember_me_token ซึ่งอาจจะเป็น token ที่ใช้ sign jwt token ของ admin-uat
98-
99-
แสดงว่าเราอาจจะใช้ token นี้มา sign token เพื่อ login เป็น admin-uat ได้
100-
101-
แต่เราไม่มี jwt secret key สำหรับใช้ sign token แล้วเราจะหามันได้ยังไง ?
102-
103-
คำตอบก็คือ bruteforce ยังไงหล่ะ
74+
ดูจากข้อมูลนี้เราจะเห็น remember_me_token ซึ่งอาจจะเป็น token ที่ใช้ sign jwt token ของ admin-uat แสดงว่าเราอาจจะใช้ token นี้มา sign token เพื่อ login เป็น admin-uat ได้
10475

76+
แต่เราไม่มี jwt secret key สำหรับใช้ sign token แล้วเราจะหามันได้ยังไง ? คำตอบก็คือ **bruteforce** ยังไงหล่ะ
10577
ก่อนอื่นเราต้องไปเอา Jwt token ของเรามาก่อน ซึ่งจะอยู่ใน cookies
10678

10779
![](https://cdn-images-1.medium.com/max/800/1*pFCpW3nPwieQsrVl37GpHw.png)
10880

10981
และเราจะใช้ hashcat สำหรับ brutefoce เพื่อหา Jwt secret key
11082

83+
```
11184
hashcat -a 0 -m 16500 "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6ImI4MTk0M2JhLWQxYzUtNDk1YS04NDI3LTQ3MTFjMzkyNTZiZiJ9.Rlk_a69lx16hNhwn4nBfRxhiMGmEDoPIcxfr1_7JdH8" /usr/share/wordlists/rockyou.txt
85+
```
11286

11387
![](https://cdn-images-1.medium.com/max/800/1*iEY26e5EwWmYuby84foSmQ.png)
11488

0 commit comments

Comments
 (0)