🇻🇳
th13
  • info
  • JAVA
    • Notes: RMI linh tinh
    • [CVE-2013-2165] Phân tích RichFaces vulnerability thông qua CTF challenge
  • CTF WRITE UP
    • [Web]ImaginaryCTF 2021
    • [Web]CSAW CTF 2021
    • [Web]RaRCTF 2021
    • [Web]LIT CTF 07/2021
    • [Web]redpwn 2021
    • [Web]WeCTF 2021
    • [Web]WannaGame 21/05/2021
    • [Web]San Diego CTF 2021
    • [Web]picoMini by redpwn
    • [Web]WannaGame 17/04/2021
    • [Web]picoCTF 2021
    • [Web]BambooCTF/Calc.exe
  • saved
    • Tài liệu JAV Sờ cu 101
    • [NT230]PE file Injection
    • [WU][web]root-me
    • [WU]Lord of SQLinjection
    • [WU][Web]CyberTalents
    • [exploit][sqli]Challenge ngày Tết
Powered by GitBook
On this page
  • LEVEL EASY
  • Admin has the power
  • This is Sparta
  • Iam Legend
  • Cool name effect
  • Encrypted Database
  • Newsletter
  • who am i?
  • Blue Inc
  • Easy Message
  • Cheers
  • Got Controls
  • Back to basics
  • Maximum Courage
  • Easy Access
  • COMRADE III
  • x corp
  • uGame
  • Silly Doors
  • bean
  • SkiddyKill3r
  • LEVEL MEDIUM
  • share the ideas
  • Dark Project
  • Join Team
  • The Restricted Sessions

Was this helpful?

Edit on GitHub
  1. saved

[WU][Web]CyberTalents

Hành trình phá đảo cybertalents

Previous[WU]Lord of SQLinjectionNext[exploit][sqli]Challenge ngày Tết

Last updated 4 years ago

Was this helpful?

LEVEL EASY

Admin has the power

Link chall:

  • 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

  • Ctr+U xem source

  • Phát hiện 1 đoạn JS khá dài và khó đọc

  • 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

  • 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

  • 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

  • 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

  • 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?

  • 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

  • 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

  • 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

  • Thêm param welcome vào url:

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

Got Controls

  • 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

  • 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

  • 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 patterns

  • objects/ : 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)

  • Check git status

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

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

  • Vào dạo quanh 1 vòng không thấy gì thôi thì quyết định dùng dirb để scan directory

  • 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ì?!!?!

  • 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

  • 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

  • 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

  • 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.

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.

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

SkiddyKill3r

  • 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

  • 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

  • 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ácinclude\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

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

  • Ctr+U xem source cái!

  • Mở burpsuite, thêm trường Cookie và đặt cookie PHPSESSID 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ức POST và 1 param là PHPSESSID với giá trị là chuỗi ký tự vừa lụm được ở trên.

Link chall:

Sử dụng online decoder sau

Link chall:

Link chall:

Link chall:

Link chall:

Link chall:

Link chall:

Link chall:

Link chall:

Link chall:

Link chall: '

Link chall:

quoted from

Link chall:

Link chall:

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

Doc chính thống từ git để xem history commit:

Link chall:

Link chall:

Link chall:

Tham khảo:

Link chall:

Tham khảo:

Link chall:

Link chall:

Link chall:

Link chall:

Link chall:

http://35.193.45.56/sparta/
https://lelinhtinh.github.io/de4js/
http://35.193.45.56/iamlegend/
http://34.77.37.110/cool-effect/
http://34.77.37.110//encrypted-database/
http://18.192.3.151/newsletter/
http://34.76.107.218/whoami/
http://35.240.62.111/blue_inc/chal1/
http://35.240.62.111/easymessage/
http://ec2-54-93-122-202.eu-central-1.compute.amazonaws.com/ch33r5/
http://35.197.254.240/gotcontrol/
http://35.197.254.240/backtobasics
http://3.126.138.80/maximum/
https://stackoverflow.com/questions/29217859/what-is-the-git-folder
http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/easy-access/
http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/comrade/
Maximum Courage
https://git-scm.com/book/en/v2/Git-Internals-Git-References
http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/xcorp/
http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/gamebook/
http://ec2-35-158-236-11.eu-central-1.compute.amazonaws.com/silly/
https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions
http://52.28.216.196/bean/
https://www.acunetix.com/vulnerabilities/web/path-traversal-via-misconfigured-nginx-alias/
http://52.28.216.196/skiddy/
http://3.126.138.80/shareideas/
https://sqlite.org/cli.html
https://hydrasky.com/network-security/sqlite-injection/
http://35.184.249.177/darkp/
https://medium.com/@Aptive/local-file-inclusion-lfi-web-application-penetration-testing-cc9dc8dd3601
https://medium.com/@vnptsec/l%E1%BB%97-h%E1%BB%95ng-file-inclusion-adbb2e2d7b1b
https://viblo.asia/p/file-inclusion-vulnerability-exploit-4P856NMa5Y3
http://18.192.3.151/join-team/
http://34.77.37.110/restricted-sessions/
http://35.193.45.56/adminpower/
đăng nhập thành công
edit header request
flag
script
đã được format
decoded
flag
eval decoder
jsfuck decoder - flag trong code
flag
<h1 onclick="alert('1')">thien</h1>
<body onload=alert(1)>hello</body>
js
source
phát hiện trang đăng nhập
phát hiện 1 input và 1 file
flag
đúng format
server báo contain @ và . tức có validating input
Param gửi đi oke thì validating khá yếu
Thành công thực hiện command list
Gói tin thứ 2 có 1 đoạn cookie authen được encode bằng base64
decode cookie
yah! có flag
thay thế demo bằng admin
flag
có gì mới nè
có user pass nè, decode thôi
php báo lỗi chưa khai báo biến welcome nè
php báo lỗi thiếu gimme_flag nè
xin flag thì cho flag
đề bảo truy cập từ local machine hoặc local LAN
OKEEEE có flag
packet 1
Trong respones thu được đoạn script
đoạn code hàm ý là đảo ngược chuỗi ceab068d9522dc567177de8009f323b2
hehe lụm được 1 cái check trước nha!
Hong có gì hết trơn
có sự thay đổi: xóa file index.php và chỉnh sửa trong file flag.php
oke có flag - một chuỗi md5
' or '1'='1' #
flag
ra 1 cái url nè
nhiều file bị xóa ghê
api.php
contact_process.php
lịch sử có 2 commit
vừa hay có file access.php rồi nè
access.php
flag
nhập gì vào thì sẽ đưa vào alt của thẻ img
<body onload=alert(1)></body>
cách mà nó nhúng vào
flag
thành công xss
flag
header request chưa bị chỉnh sửa
sửa cho giống admin để hy vọng mình vừa đổi password của admin
OHHHH thành công nè
YOOOOO Ơn giời flag đây rồi
scan được 1 url bị direct nè
thật sự bị direct qua đây
phát hiện ra lỗi ngay
Oh có file gì nè
Done! capture the flag
phát hiện hint khá mới
aaaa có hint
vào hint xem thử mà có vẻ thiếu gì đó
ơn giời source code đây rồi
có được 2 phần của flag rồi nè!
bắt đầu làm theo hint thôi
nhưng mình nghĩ flag nằm ở đây
nhớ lại cái hint này trong source rồi tiếp tục mò
cái chính xác nhất :<
final flag đây rồi :>>>
<body onload=alert(1)>test</body> Ơ XSS ĐƯỢC NÈ @@
sau 5p thử các loại không có gì nhưng cuối cùng cũng bung lỗi nè @@
kết quả sau khi exploit
tìm ra được 1 account quyền user nè
done flag hereeeeeeeeee!
php://filter/convert.base64-encode/resource=index
got the flag
1 đoạn jquery ajax khá hữu ích
được 1 hint mới toanh, vào file xem thử
được tận 3 chuỗi giá trị cookie :)) quẹo lựa luôn!
hint mới nữa nè
ayyaaaa, không thành công rồi
oke done, giờ có username rồi, bỏ vào cookie UserInfo thôi!
ơn giời flag đây giồi!