[WU][Web]CyberTalents
Hành trình phá đảo cybertalents
LEVEL EASY
Admin has the power
Link chall: http://35.193.45.56/adminpower/
Ctrl+U để xem source
Trong source có đoạn comment HTML username password để đăng nhập

Nhớ lại hint "Administrators only has the power to see the flag"
Sử dụng burpsuite để edit header request trường cookie từ role=support sang role=admin

Kết quả nhận ngay flag

This is Sparta
Link chall: http://35.193.45.56/sparta/
Ctr+U xem source
Phát hiện 1 đoạn JS khá dài và khó đọc

Sử dụng online decoder sau https://lelinhtinh.github.io/de4js/
Có thể đọc hiểu từ cái đoạn này luôn

Hoặc decode dễ xem hơn

user và pass là Cyber-Talent là done

Iam Legend
Link chall: http://35.193.45.56/iamlegend/
Xem source
Một đoạn script lạ
Sử dụng decoder trên

Tiếp tục decode là có flag


Cool name effect
Link chall: http://34.77.37.110/cool-effect/
Thấy input rồi in cái input đó ra thì nghĩ ngay đến XSS

Dùng input khác:

Bài này có thể dùng nhiều XSS payload khác nhau nhưng nhìn chung thì chỉ cần Alert thành công.
Lý do kỹ hơn thì xem source có 1 đoạn JS cần decode để đọc và có 1 đoạn:

JS bắt sự kiện alert rồi xuất flag qua alert trên (có thể debug đoạn code trên để lấy flag trực tiếp).
Encrypted Database
Link chall: http://34.77.37.110//encrypted-database/
Xem source và phát hiện

Thử truy cập url /secret-admin

Tiếp tục Ctr+U xem source

Xóa attribute hidden hoặc vào trực tiếp file db.json để xem flag

Newsletter
Link chall: http://18.192.3.151/newsletter/
Input là email type
Nhập đúng format

Dùng burpsuite bật proxy để chỉnh sửa gói tin gửi đi rồi đưa và repeater để debug cho tiện
Thử gửi không đúng format email

Xem validating phía server mạnh không

inject commad vào thử (payload: ;ls;@.)

Giải thích: %3b là dấu "chấm phẩy - ;" để thực hiện nhiều command trong linux có thể dùng ; || &&
who am i?
Link chall: http://34.76.107.218/whoami/
Xem source
Được cho username password là Guest
Kết quả đoán trước được là bị access denied
Dùng brupsuite để kiểm tra gói tin gửi đi (vẫn đăng nhập là Guest) và cho vào repeater debug


Sửa lại cookie Authen là login=Admin sau khi encode: bG9naW49YWRtaW4%3D

Blue Inc
Link chall: http://35.240.62.111/blue_inc/chal1/
Vào login và đăng nhập demo/demo theo hint đề bài.
Đăng nhập thành công và vào profile (edit lại header request)

Bắt được flag

Easy Message
Link chall: http://35.240.62.111/easymessage/
Nhìn tổng quan, xem source không thấy gì thử robots.txt

Thêm param source vào url

Decode ra: Cyber-Talents. Đăng nhập thử
Có đoạn mã morse: ..-. .-.. .- --. -.--. .. -....- -.- -. ----- .-- -....- -.-- ----- ..- -....- .- .-. ...-- -....- -- ----- .-. ... ...-- -.--.-
Translated: FLAG(I-KN0W-Y0U-AR3-M0RS3)
Cheers
Link chall: http://ec2-54-93-122-202.eu-central-1.compute.amazonaws.com/ch33r5/

Thêm param welcome vào url:

Thiếu gì thêm đó thôi!

Got Controls
Link chall: http://35.197.254.240/gotcontrol/

Lúc đầu mình nghĩ local là local của server nên mình thử referer và cả x-forwarded-for kèm theo http://35.197.254.240/ nhưng không được.
LOCAL??? thế mình thử 127.0.0.1 thế nào

Back to basics
Link chall: http://35.197.254.240/backtobasics'
Mở challange bị chuyển hướng sang google
Hint từ đề: not pretty much many options. No need to open a link from a browser, there is always a different way
Dùng brupsuite. Từ "not pretty much many options" nghĩ xem thay đổi gì để có gì đó đặc biệt. Ví dụ như GET sang POST.


Decode đoạn script trên

flag: 2b323f9008ed771765cd2259d860baec
Maximum Courage
Link chall: http://3.126.138.80/maximum/
Ayya bài này thử hết robots.txt, flag.php, thêm param source, admin, user,... mà không có gì.
Mấy bài mà không để lại vết tích này thì mình dùng dirb để scan directory.

Vào link trên tải file HEAD có nội dung là 1 chuỗi rồi submit và decrypt xong submit nhưng vẫn wrong, thử vài thư mục/file khác nhưng không thấy gì.
Dùng wget -r http://3.126.138.80/maximum/.git để tải toàn bộ file và thư mục.
Xem 1 vài file:

NOTE: .git là thư mục lưu tất cả trạng thái, thông tin và tất tần tật về project của bạn.
.git is initialized by
git init
..git contains all information required for version control. If you want to clone your repo, copy .git is enough.
4 sub-directories:
hooks/ : example scripts
info/ :
exclude
file for ignored patternsobjects/ : all "objects"
refs/ : pointers to commit objects
4 files:
HEAD : current branch
config : configuration options
description
index : staging area
Here "object" includes:
blobs(files)
trees(directories)
commits(reference to a tree, parent commit, etc)
quoted from https://stackoverflow.com/questions/29217859/what-is-the-git-folder
Check git status

Restore nội dung trước đó file flag.php theo command được hướng dẫn

Easy Access
Link chall: http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/easy-access/
Nhìn tổng quan, xem source, robots.txt không có gì bất thường
Đăng nhập thử với SQL injection

Done

COMRADE III
Link chall: http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/comrade/
Vào dạo quanh 1 vòng không thấy gì thôi thì quyết định dùng dirb để scan directory

Câu này bắt đầu giống câu Maximum Courage. Dùng wget và git status kiểm tra thôi!

Khôi phục lại tất cả và mở ra xem thử


Oh no không file nào chứa flag như bài trên. Hmmmm api.php có nhúng 1 file access.php mà không thấy đâu, maybe là file access.php đã bị xóa từ những lần commit trước đó nữa. Phải tìm hiểu thêm về .git để xem có thể làm gì?!!?!
Doc chính thống từ git để xem history commit: https://git-scm.com/book/en/v2/Git-Internals-Git-References
Xem lại commit log

Commit gần nhất mình đã xem vậy thử xem commit thứ 2


Vừa hay ta đã có 3 file liên kết với nhau. Ghép lại cùng đọc và debug nào!
WORKFLOW: Flag trong api.php <- COOKIE api_key = $apikey = $access = bin2hex('this_is_top_secret') = 746869735f69735f746f705f736563726574
Gửi 1 request đến với cookie như trên tới api.php

x corp
Link chall: http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/xcorp/
Thử nhập tên mình vào

Thử vài cái thẻ script, img mà bị filter lọc nên dùng payload sau để XSS



uGame
Link chall: http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/gamebook/
Xem tổng quan thấy không gì đặc biệt. Thử 1 payload XSS vào input xem nó xuất ra gì

Tiếp theo thử thẻ scipt nhưng không được
Thử payload mà trigger onload cũng không có gì đặc biệt
Thử payload trigger onerror rồi alert thì thành công (không alert là không được).

Silly Doors
Link chall: http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/silly/
Xem tổng quan thì trong source có mỗi cái link register bị hidden ra thì không thấy gì.
Vào signup.php đăng ký 1 tài khoản và đăng nhập ngay xem thế nào (không cho đặt tên là admin => đã có 1 username admin)
Trong lúc đăng nhập mình có thử cố sửa lại một số trường thành admin và userid=1

Mình thử nhiều lần sửa các trường sao cho giống admin nhưng không thành.
Vào setting edit profile để đổi password, mình cũng cố thử sửa các trường trước khi gửi đi (cứ gói tin nào gửi đi mình đều sửa userid=1)


Vậy là mình đã đổi pass thành công, thử đăng nhập với username/password là admin/admin.

GIẢI THÍCH: Theo cách suy nghĩ của mình thì session của mỗi user được lưu ở phía server thì khi đăng nhập hoặc reload lại trang đều sẽ được kiểm tra có trùng khớp giữa session lưu ở server và PHPSESSID trong cookie phía client không. Nhưng lúc đổi pass bằng cách nào đó ông dev này không kiểm tra session.
Tham khảo: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions
bean
Link chall: http://52.28.216.196/bean/
Nhìn tổng quan hong có gì để khai thác. Dùng dirb để scan directory của trang này.

Truy cập vào link xem thế nào.

Tra xem các thể loại vulr liên quan đến directory hoặc về file của nginx. Một keyword đặc biệt Directory traversal
GIẢI THÍCH: config nginx alias nếu không cẩn thận quên mất 1 dấu / sẽ là lỗ hổng để attacker tấn công khai thác. Cụ thể hơn sau url chưa directive define rõ thêm ../ sẽ đưa về thư mục gốc linux.
Tham khảo: https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/

Dựa vào hint đề bài để đưa về nhà thì ta vào thư mục home để xem


SkiddyKill3r
Link chall: http://52.28.216.196/skiddy/
Chall bảo mình thử search Admin hoặc Users gì đó thì cứ thử
Nhập Admin mà Forbidden :< Ctrl+U lên xem source

Search Momen thử


Thêm param show với giá trị True/False thử

Thêm trường Referer và các giá trị Cookie mà source cần vào

Giải thích về 2 giá trị của cookie flag và flag1, search keyword: Magic hashes php
Thêm param flag và sửa cookie flag thỏa yêu cầu thứ 3

Làm theo hint và bị dẫn dắt đi đủ thứ cảm xúc :)


Thay đổi liên tục các trường trong header request và method, cuối cùng

Đổi user-agent và vào từng file allow xem thôi

LEVEL MEDIUM
share the ideas
Link chall: http://3.126.138.80/shareideas/
Xem tổng thể source hong thấy gì. Đăng ký rồi đăng nhập bằng proxy cũng không thấy gì đặc biệt
Share thử 1 post

Trong đầu nảy ra cái suy nghĩ do backend php echo chuỗi nhập vào nên mình sẽ thử RCE

Đem lỗi đó đi search thì mình biết rằng đấy là lỗi của Sqlite chứ hong phải php @@ quàoooo
Vậy bắt đầu injection sqlite. Do là lần đầu nên vừa tìm hiểu vừa exploit :<
Ban đầu mình hình dung câu lệnh sqlite mà server dùng để insert idea của mình vào là: INSERT INTO <tblname>(col_value) VALUES('.$value.');
' || (<statment sqlite>) || ' : sẽ là payload hoàn hảo nhất để exploit.
Dấu 'nháy' đầu và cuối là để đóng và mở các values phía trước và sau.
Dấu 'double pipline' có nghĩa là nối chuỗi.
Dấu 'đóng/mở ngoặc' một cái thiết yếu trong syntax sql để bao khối lệnh khi thêm vào 1 khối lệnh

Tất cả các đúc kết trên mình tham khảo từ các nguồn sau:
Tiếp tục exploit để xem table
xde43_users
vừa tìm được phía trên

Vẫn chưa thỏa flag (password của admin). Chắc do hidden :< kèm theo cái
where
thử

Dark Project
Link chall: http://35.184.249.177/darkp/
Câu này tổng quan ban đầu mình nhìn không có gì đặc biệt, không tim ra được hướng đi
Click vào các mục của navbar thì mình có "linh cảm ông bà nhắc nhở" :"))))))))
Lúc trước code web php thì mình luôn pretty url chứ ít khi để nó cả query string vậy nên là mình khá là có nghi vấn với url đặc biệt ở chỗ truyền giá trị cho param
home
Với nghi vấn này mình có tưởng tượng ra trong đầu:
Khi truyền vào giá trị trị gì cho home thì index.php sẽ gọi page với giá trị đó lên qua các
include\require\include_once\require_once
Thật may mắn khi tìm được vuln liên qua với keyword
LFI php
:

Vậy là nhận được source code dưới dạng base64. Giờ đi decode thôiiii

Join Team
Link chall: http://18.192.3.151/join-team/
Chall này bị lậu :)))) làm quài không ra.. quá thất dzọng :< Ai đó chơi sửa challenge rùi bà con ơi
The Restricted Sessions
Link chall: http://34.77.37.110/restricted-sessions/
Ctr+U xem source cái!

Mở burpsuite, thêm trường
Cookie
và đặt cookiePHPSESSID
vào rồi gửi đi!


Lựa cái thứ 3, sửa giá trị
PHPSESSID
rồi gửi đi lần nữa

Thêm 1 cookie
UserInfo
giá trị username server cần làadmin
vào xem sao

Giờ nhìn lại thì nhớ ra đoạn code ajax phía trên post đến 1 file
getcurrentuserinfo.php
với phương thứcPOST
và 1 param làPHPSESSID
với giá trị là chuỗi ký tự vừa lụm được ở trên.


Last updated
Was this helpful?