π°[WRECK CTF 2022] Writeup Web
Mα» ΔαΊ§u
GiαΊ£i nΓ y mΓ¬nh lΓ m khi chα» cΓ²n 3 tiαΊΏng nα»―a kαΊΏt thΓΊc nΓͺn khΓ‘ tiαΊΏc 3 bΓ i chΖ°a kα»p lΓ m....CΓ³ taast cαΊ£ 8 bΓ i web mΓ¬nh solve Δược 5/8 vΓ mα»t bΓ i lΓ m Δược sau khi giαΊ£i kαΊΏt thΓΊc. DΖ°α»i ΔΓ’y lΓ write up cα»§a mΓ¬nh. Γ ΔΓ’y lΓ toΓ n bα» source code mαΊ£ng web: LINK
Web/souce

NhΖ° tΓͺn bΓ i vΓ nΓ³ khΓ‘ dα» , khi vΓ o trang web nΓ³ sαΊ½ nhΖ° thαΊΏ nΓ y....

TiαΊΏp theo mΓ¬nh source code nΓ³ lΓͺn

CΓ³ ngay 1/3 flag khi nΓ y mΓ¬nh thαΊ₯y hai file trΓͺn khΓ‘ ΔΓ‘ng nghi nhΖ°ng mΓ¬nh chαΊ―c flag sαΊ½ nαΊ±m trong hai file style.css vΓ script.js


flag{bd6a9e3f1690f7abb8445c0e}
Web/password-1

Khi nghΔ© tα»i password mΓ¬nh nghΔ© tα»i lα» hα»ng sqli nhΖ°ng bΓ i nΓ y cΓ³ source nΓͺn chΓΊng ta sαΊ½ xem xΓ©t source


α» ΔΓ’y chα» cΓ³ hai file, α» ΔΓ’y chΓΊng ta sαΊ½ xΓ©t file app.py
α» ΔΓ’y biαΊΏn hash chα»©a mα»t chuα»i, ΔΓ’y lΓ mΓ£ SHA256, mα»t loαΊ‘i mΓ£ hΓ³a mα»t chiα»u, oke tiαΊΏp theo nαΊΏu giΓ‘ trα» nhαΊp vΓ o input trΓͺn Δược mΓ£ hΓ³a sha256 bαΊ±ng hash thΓ¬ sαΊ½ cΓ³ flag, ΔΖ‘n giαΊ£n lΓ vαΊy....
NhΖ°ng khΓ΄ng... nhΖ° trΓͺn mΓ¬nh ΔΓ£ nΓ³i mΓ£ hΓ³a SHA256 lΓ mΓ£ hΓ³a mα»t chiα»u nΓͺn Δiα»u nΓ y coi nhΖ° khΓ΄ng thα»...Oke sau khi xem tiαΊΏp code mΓ¬nh nhαΊn ra cΓ³ lα» hα»ng.
MΓ¬nh sαΊ½ giαΊ£i thΓch α» ΔΓ’y thΓ¬ @server cΓ³ thα» trα» tα»i hay gα»i lΓ get tα»i /api/output vΓ xα» lΓ½ ngay tα»i hΓ m flag vΓ in ra flag.

Web/password-2


BΓ i nΓ y cΕ©ng cΓ³ source nα»t nΓͺn chΓΊng ta lαΊ‘i phΓ’n tΓch code
NhΓ¬n vΓ o ΔoαΊ‘n code nΓ y sau khi password Δược nhαΊp thΓ¬ prepare sαΊ½ xα» lΓ½ ΔoαΊ‘n query nhΖ°ng vαΊ₯n Δα» α» ΔΓ’y lΓ password Δược chΓ¨n vΓ o query Δα» so sΓ‘nh khi ΔΓ³ cΓ³ thα» break out query trΓͺn vα»i cΓΊ phΓ‘p nhΖ° 'or'1'='1


Web/note-1


BΓ i nΓ y khΓ‘ thΓΊ vα», khi vΓ o trang web chΓΊng ta thαΊ₯y mα»t mα»t input Δα» chΓΊng ta ghi bαΊ₯t cα»© thα»© gΓ¬ vΓ o vΓ note lαΊ‘i.....
Oke bΓ’y giα» vαΊ«n cαΊ§n thα»±c hiα»n nhΖ° mα»t ngΖ°α»i bΓ¬nh thΖ°α»ng thΓ΄i note lαΊ‘i vΓ nΓ³ lΓ private mΓ nΓͺn khΓ΄ng ai cΓ³ thα» Δα»c Δược...

ChΓΊng ta chΓΊ Γ½ rαΊ±ng trΓͺn url cΓ³ mα»t ΔoαΊ‘n mΓ£ sau /view/ nhΓ¬n cΓ³ vαΊ» lΓ hex nhΖ°ng khΓ΄ng chαΊ―c...
Khi mΓ¬nh check thΓ¬ nΓ³ k ra mα»t chuα» gΓ¬ cαΊ£ thΓ¬ mΓ¬nh dΓΉng crackstation Δα» check thΓ¬ nΓ³ ra nhΖ° nΓ y

Oke xΓ‘c Δα»nh Δược rΓ΅ loαΊ‘i mΓ£ hΓ³a vΓ mΓ¬nh thα» dΓΉng mα»t sα» khΓ‘c mΓ£ hΓ³a SHA256 thay thαΊΏ cho ΔoαΊ‘n mΓ£ trΓͺn vΓ xuαΊ₯t hiα»n mα»t note cα»§a ngΖ°α»i khΓ‘c.
Oke mΓ¬nh xΓ‘c Δα»nh ΔΓ’y lΓ lα» hα»ng Access control vulnerabilities and privilege escalation(_MΓ¬nh cΓ³ viαΊΏt bΓ y nΓ y α» Research vul) khi ΔΓ³ chΓΊng ta cΓ³ thα» xem Δược note cα»§a ngΖ°α»i khΓ‘c mΓ khΓ΄ng bα» cαΊ£n trα».
α» ΔΓ’y mΓ¬nh dΓΉng tool burp suite Δα» quΓ©t. Γ trΖ°α»c khi quΓ©t thΓ¬ cΓ³ ΔoαΊ‘n code cα»§a bΓ i nhΖ° sau.

α» ΔΓ’y hαΊ±ng sα» state Δược gΓ‘n mα»t Object cΓ³ key lΓ id vΓ value lΓ 0 sau ΔΓ³ Γ³ mΓ£ hΓ³a sha256, bα» qua ΔoαΊ‘n dΖ°α»i thΓ¬ bαΊ‘n cα»© hiα»u Δoan giαΊ£n nΓ³ sαΊ½ mΓ£ hΓ³a 256 sau ΔΓ³ nΓ³ Δược +1 vΓ Δược set vΓ o note

Sau khi post note lΓͺn thΓ¬ khi ΔΓ³ hαΊ±ng sα» note sαΊ½ check xem cΓ³ nα»i dung khΓ΄ng, nαΊΏu k cΓ³ thΓ¬ trαΊ£ vα» chuα»i rα»ng, cΓ³ thΓ¬ trαΊ£ vα» chuα»i Δược nhαΊp vΓ vαΊ«n add note vΓ o id vΓ trαΊ£ vα» trang /view/id.
Oke Δược rα»i bΓ’y giα» tα»i burp thΓ¬ chΓΊng ta dΓΉng payload lΓ sα» tα»« 0 tα»i 100 vΓ payload process lΓ mΓ£ hΓ³a sha256. VΓ grep-extract lΓ nhΖ° nΓ y khΓ΄ng thΓ¬ sαΊ½ filter kαΊΏt quαΊ£ sau khi quΓ©t xong...tΓΉy!


Sau khi quΓ©t thΓ¬ flag nαΊ±m α» id lΓ 0, thΓ¬ bΓ i nΓ y khΓ‘ ΔΓ‘nh lα»«a chΓΊng ta nαΊΏu chΓΊng ta bα» Δi sα» 0 thΓ¬ sαΊ½ khΓ΄ng thαΊ₯y Δược flag.
Web/blog


Oke bà i nà y có source code mình sẽ check.

α» ΔΓ’y chΓΊng ta sαΊ½ xΓ©t file blog.py
Lα» hα»ng SSTI xuαΊ₯t hiα»n α» ΔΓ’y - nhΓΊng vΓ o title vΓ ta cΓ³ thα» Δα»c Δược secret-key.
NhΓ¬n vΓ o dΓ²ng code nΓ y chΓΊng ta thαΊ₯y rαΊ±ng flag nαΊ±m α» config...
Exploit
BΓ’y giα» chΓΊng ta sαΊ½ check phαΊ§n titke cα»§a trang web


ChΓΊng ta cΓ³ thα» thαΊ₯y sau khi submit thΓ¬ SSTI bα» khai thΓ‘c, nhΖ° α» trΓͺn chΓΊng ta ΔΓ£ biαΊΏn flag α» nαΊ±m α» config vΓ biαΊΏn secret_key vΓ payload lΓΊc nΓ y lΓ :

Oke thΓ nh cΓ΄ng vαΊy chΓΊng ta ΔΓ£ cΓ³ flag: flag{I'm_not_real_:)}
Web/note-2

Oke bΓ i nΓ y khΓ‘ lΓ thΓΊ vα», trong bΓ i nΓ y cΓ³ 2 link, nΓ³ vαΊ«n lΓ private note vΓ cΓ³ mα»t link submit cho Admin bot => mΓ¬nh nghΔ© tα»i XSS;
VΓ o link ΔαΊ§u vΓ trang note, mΓ¬nh thα» note "Shang" vΓ source code nΓ³ ra vΓ nhαΊn ra rαΊ±ng.../


NhαΊn ra rαΊ±ng input ΔαΊ§u vΓ o mΓ¬nh cΓ³ thα» break out ΔoαΊ‘n js ΔΓ³ Δi bαΊ±ng cΓ‘ch ";alert(1)//

Oke vαΊy lΓ khai thΓ‘c thΓ nh cΓ΄ng XSS, bΓ’y giα» chΓΊng ta cαΊ§n xΓ’y dα»±ng payload Δα» submit lΓͺn trang cα»§a mΓ¬nh vΓ lαΊ₯y Δược {id} Δược mΓ£ hΓ³a sau /view cα»§a admin thΓ¬ sαΊ½ cΓ³ flag...NhαΊ―c lαΊ‘i trang nΓ y k cΓ³ cookie nΓͺn cΓ‘i cαΊ§n lαΊ₯y lΓ id trΓͺn thanh url.
Oke sau mα»t lΓΊc research thΓ¬ mΓ¬nh cΓ³ ΔoαΊ‘n ΔαΊ§u cα»§a payload nhΖ° nΓ y: ";});
MΓ¬nh giαΊ£i thΓch ΔoαΊ‘n ΔαΊ§u payload nΓ y xΓu nhΓ©

CΓ‘c bαΊ‘n cΓ³ thα» xem mΓ¬nh ΔΓ£ break out ra khα»i event khi click vΓ o button(chΓΊ Γ½ dαΊ₯u ngoαΊ·c mΓ¬nh trα» vΓ o), khi ΔΓ³ mΓ¬nh viαΊΏt mα»t dΓ²ng code JS mα»i vΓ chαΊ―c chαΊ―n rαΊ±ng ΔoαΊ‘n cuα»i payload cα»§a mΓ¬nh sαΊ½ lΓ :
;//";α» ΔΓ’y cΓ‘c bαΊ‘n chα» cαΊ§n hiα»u rαΊ±ng // lΓ cmt trong JS
TiαΊΏp theo chΓΊng ta sαΊ½ xΓ’y dα»±ng phαΊ§n giα»―a payload, vΓ¬ chΓΊng ta cαΊ§n lαΊ₯y id cα»§a admin(Lα» hα»ng XSS nhΓ©) - trang nΓ y khΓ΄ng hα» cΓ³ cookie. VαΊy lΓ m sao Δα» lαΊ₯y id cα»§a admin?
ChΓΊng ta sαΊ½ sα» dα»₯ng document.body.innerHTML - nΓ³ dΓΉng Δα» load hay lΓ in ra source code cα»§a trang, kiα»u nhΖ° nΓ y:

Δα» nΓ³ gα»n lαΊ‘i chΓΊng encodeURIComponent (nΓ³ sαΊ½ encode gαΊ§n hαΊΏt trα»« mα»t vΓ i kΓ½ tα»± ΔαΊ·c biα»t) Δα» mαΊ₯t khoαΊ£ng trαΊ―ng vΓ biαΊΏn nΓ³ thΓ nh mα»t chuα»i Δα» chΓΊng ta dα»
encode b64 hΖ‘n =>tΓ³m lαΊ‘i Δα» gα»n nΓ³ Δi.
α» ΔΓ’y mΓ¬nh dΓΉng nα»i chuα»i .concat vΓ¬ dαΊ₯u + cΓ³ thα» bα» filter Δi...
BΓ’y giα» ΔoαΊ‘n payload hoΓ n chα» sαΊ½ lΓ nhΖ° nΓ y:
Khi cΓ‘i nΓ y Δược gα»i Δi vΓ trang Δược load thΓ¬ sα»± kiα»n trΓͺn sαΊ½ thα»±c thi ΔoαΊ‘n mΓ£ trong, nΓ³ rΓ΅ ra lΓ khi admin nhαΊ₯n vΓ o thΓ¬ ΔoαΊ‘n mΓ£ Δược tα»± load mΓ admin khΓ΄ng cαΊ§n phαΊ£i αΊ₯n xem note private.
α» ΔΓ’y mΓ¬nh dΓΉng Burp collaborator client Δα» thay cho server request, dΓΉng burp suite Δα» lαΊ₯y link Δα»a chα» cα»§a trang khi mΓ¬nh submit payload kiα»u nhΖ° nΓ y:
ΔΓ’y lΓ Δα»a chα» trang mΓ¬nh vα»«a submit cΓ³ chα»©a ΔoαΊ‘n payload trΓͺn, vΓ gα»i link nΓ y cho con bot cα»§a admin.

Δợi mα»t lΓΊc con bot admin sαΊ½ trαΊ£ vα» mα»t ΔoαΊ‘n base64 nhΖ° sau:

Sau ΔΓ³ decode nΓ³ ra sαΊ½ cΓ³ Δược id cα»§a admin cαΊ§n lαΊ₯y flag.

Submit lΓͺn cΓ³ ngay flag

Flag: flag{context_dependent_sanitization}
CαΊ£m Ζ‘n mα»i ngΖ°α»i ΔΓ£ Δα»c write up, trΓͺn ΔΓ’y lΓ mα»t sα» bΓ i mΓ¬nh lΓ m ra trong thα»i gian thi, mαΊ·c dΓΉ cΓ’u viαΊΏt chΖ°a Δược tα»t nhΖ°ng mΓ¬nh ΔΓ£ cα» gαΊ―ng viαΊΏt ra nhα»―ng gΓ¬ mΓ¬nh biαΊΏt. Mong cΓ‘c bαΊ‘n thΓ΄ng cαΊ£m!!!
Last updated