π°[Knight CTF 2023] Writeup Web
Mα» ΔαΊ§u
GiαΊ£i nΓ y lΓ giαΊ£i ΔαΊ§u nΔm 2023 mΓ team mΓ¬nh chΖ‘i, giαΊ£i nΓ y chα»§ yαΊΏu nαΊ·ng vα» Reverse vα» mαΊ£ng web chα» cΓ³ 2 bΓ i nαΊΏu bαΊ‘n nΓ o Δam mΓͺ Reverve thΓ¬ cΓ³ thα» xem blog bαΊ‘n mΓ¬nh cΓ³ viαΊΏt wu cα»§a giαΊ£i nΓ y α» ΔΓ’y.
Get me

α» bΓ i nΓ y thΓ¬ GET flag tα»« API vα» thΓ¬ lΓΊc truy cαΊp vΓ o link giao diα»n lΓ mα»t chuα»i json nhΖ° nΓ y.

NΓ³ hiα»n ra mΓ¬nh khΓ΄ng thα» GET nΓ³ Δược mΓ¬nh sαΊ½ dΓΉng curl Δα» post mα»t cΓ‘i gΓ¬ ΔΓ³ lΓͺn trang web.

NhΖ° message thΓ΄ng bΓ‘o thΓ¬ cαΊ§n gα»i cho nΓ³ mα»t url thΓ¬ chΓΊng ta cΕ©ng sα» dα»₯ng curl Δα» post lΓͺn.

NΓ³ trαΊ£ vα» cho chΓΊng ta mα»t link Δα» truy cαΊp vΓ lαΊ₯y flag.

Knight Search

Analys
Khi truy cαΊp vΓ o trang web chΓΊng ta cΓ³ thα» thαΊ₯y Δược giao diα»n nhΖ° sau:

Theo Δα» bΓ i thΓ¬ web nΓ y Δược code bα»i framwork Flask thΓ¬ nhα»―ng lα» hα»ng liΓͺn quan tα»i Flask thΖ°α»ng sαΊ½ lΓ SSTI, Path or Directory traversal/Local File Inclusion ....
MΓ¬nh ΔΓ£ check nhΖ°ng trang web lα»i SSTI nhΖ°ng khΓ΄ng cΓ³ lα»i gΓ¬ xαΊ£y ra hΓ¬nh nhΖ° parameter khΓ΄ng nhαΊn, mΓ¬nh nghΔ© nΓ³ lΓ lα»i khΓ‘c cΓ³ thα» lΓ LFI (VΓ¬ trong source code cΓ³ parameter lΓ filename). MΓ¬nh sα» dα»₯ng Burp Suite Δα» check.
NαΊΏu nhΖ° chΓΊng ta thay Δα»i parameter xem cΓ³ lα»i gΓ¬ xαΊ£y ra hay khΓ΄ng ?


Xong!!! Lα»i ngoαΊ‘i lα» xuαΊ₯t hiα»n nhΖ° nΓ y:
Mα»t phαΊ§n trong chαΊΏ Δα» Werkzeug debug mode thΓ¬ cΓ³ thα» xem Δược ΔoαΊ‘n code chα»©a parameter ΔΓ³:
PhΓ’n tΓch ΔoαΊ‘n code trΓͺn chΓΊng ta thαΊ₯y Δược trang web dΓnh lα»i Local File Inclusio/Path Traversal
NgoΓ i ra khi truy cαΊp mα»t file name khΓ‘c ngoΓ i home thΓ¬ cΕ©ng xuαΊ₯t hiα»n lα»i khΓ΄ng tΓ¬m thαΊ₯y template nhΖ° dΖ°α»i:

Oke, quay lαΊ‘i lα»i Local File Inclusio/Path Traversal mΓ trang dΓnh phαΊ£i, nhΖ° ΔoαΊ‘n code trΓͺn chΓΊng ta ΔΓ£ phΓ’n tΓch thΓ¬ filename Δược replace cΓ‘c kΓ½ tα»± nΓ³i ΔΓΊng hΖ‘n Δược decode url 2 lαΊ§n nΓͺn bypass filter ../ bαΊ±ng cΓ‘ch double encode url.

LΓΊc nΓ y chΓΊng ta sαΊ½ gα»i nΓ³ lΓͺn xem cΓ³ thα» khai thΓ‘c khΓ΄ng ?
NhΖ°ng cΓ³ mα»t Δiα»u lαΊ‘ lΓΉng lΓ khi double encode thΓ¬ submit trα»±c tiαΊΏp trΓͺn trang thΓ¬ nΓ³ hiα»n ra thΖ° mα»₯c nhΖ°ng qua Brup Suite thΓ¬ khΓ΄ng mΓ cαΊ§n thΓͺm mα»t lαΊ§n encode nα»―a thΓ¬ mα»i xuαΊ₯t hiα»n.


VαΊy lΓ ΔΓ£ khai thΓ‘c thΓ nh cΓ΄ng lα»i LFI, bΓ’y giα» chΓΊng ta sαΊ½ thα» dα»c file app.py trong thΖ° mα»₯c app mΓ chΓΊng ta ΔΓ£ biαΊΏt α» phαΊ§n trΓͺn:

Δα»c thΓ nh cΓ΄ng ΔoαΊ‘n code file app.py:
Sau mα»t lΓΊc thα» Δα»c cΓ‘i file khΓ‘c nhau Δα» kiαΊΏm flag tα»« thΖ° mα»₯c home vΓ app thΓ¬ nhαΊn ra khΓ΄ng tα»n lαΊ‘i mα»t file nΓ o flag.txt, lΓΊc nΓ y Δα» cΓ³ thα» Δα»c Δược toΓ n bα» file cα»§a mΓ‘y chα»§ trΓͺn thΓ¬ chΓΊng ta cαΊ§n RCE. NhΓ¬n ΔoαΊ‘n code trΓͺn thΓ¬ tΓ‘c giαΊ£ Δα» debug=True thΓ¬ lΓΊc ΔΓ³ chΓΊng ta cΓ³ thα» RCE qua debug console:

Console sαΊ½ thΖ°α»ng bα» khΓ³a Δi vΓ cαΊ§n mΓ£ pin Δα» mα» nΓ³ ra, sau mα»t lΓΊc research thΓ¬ mΓ¬nh Δα»c Δược α» trang HackTricks bypass Pin Code.
ChΓΊng ta sαΊ½ xem xΓ©t ΔoαΊ‘n code generate PIN code α» phΓa:
VΓ giΓ‘ trα» cαΊ§n Δα» cΓ³ thα» exploit lΓ ΔoαΊ‘n code nΓ y:
VαΊy lΓ nhα»―ng dα»― liα»u chΓΊng ta cαΊ§n khai thΓ‘c cΓ³ thα» khai thΓ‘c Δược tα»« lα»i LFI nhΖ° sau:


Exploit
LΓΊc ΔαΊ§u chαΊ‘y payload nhΖ°ng nΓ³ cho mΓ£ PIN sai nhΖ°ng mα»t lΓΊc Δα»c kα»Ή thΓ¬ thαΊ₯y:
Payload cuα»i cΓΉng nhΖ° sau: (Thay hΓ m bΔm md5()->sha1())
Sau khi chαΊ‘y file trΓͺn chΓΊng ta cΓ³ PIN-CODE: 695-086-043
Truy cαΊp vΓ o console Δα» RCE: (Done)

RCE thΓ nh cΓ΄ng thΓ¬ viα»c kiαΊΏm flag quΓ‘ dα» dΓ ng:

CαΊ£m Ζ‘n cΓ‘c bαΊ‘n ΔΓ£ Δα»c bΓ i viαΊΏt!!! HαΊΉn gαΊ·p lαΊ‘i α» giαΊ£i tiαΊΏp theo...π
Last updated
