Publié le 10 juillet 2024
Le flag est dans le text
Url : whatelse.wargame.rocks
La première chose à faire, c’est un bons gros nmap
sur
le DNS, pour voir les ports ouvert. Il n’y en a que deux : le 443 qui
réponds en HTTPS, et le 80 qui réponds en HTTP. Si on interroge le site
en HTTP, il fait une simple redirection vers sa version HTTPS.
Je fais un curl -i https://whatelse.wargame.rocks/
, pour
voir ce que retourne cette page en incluant les en-têtes.
HTTP/2 200
accept-ranges: bytes
alt-svc: h3=":443"; ma=2592000
content-type: text/html; charset=utf-8
etag: "d2imqxrbsfnr3f"
last-modified: Sat, 06 Jul 2024 17:25:21 GMT
server: Caddy
vary: Accept-Encoding
content-length: 123
date: Sat, 06 Jul 2024 20:24:35 GMT
<!DOCTYPE html>
<html>
<head>
<title>What else ?</title>
</head>
<body>
<p>The flag is in the text</p>
</body>
</html>
Ce challenge m’a posé quelques difficultés. J’ai retourné le résultat dans tout les sens sans rien trouver.
C’est en relisant l’énoncé que j’ai eu une idée.
Le flag est dans le text
⇒ Il y a une faute d’orthographe.
Il est où le e
à la fin de text
? Et si ce
n’était pas une faute ? C’est ce qui m’a donné l’idée d’aller voir le
champ TEXT
de l’enregistrement DNS, en faisant un
dig -t txt whatelse.wargame.rocks
.
; <<>> DiG 9.18.24-0ubuntu5-Ubuntu <<>> -t txt whatelse.wargame.rocks
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28161
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;whatelse.wargame.rocks. IN TXT
;; ANSWER SECTION:
whatelse.wargame.rocks. 1702 IN TXT "leHACK{wh47_d1d_y0u_3xp3C7_?}"
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Jul 06 22:24:46 CEST 2024
;; MSG SIZE rcvd: 93
Et voilà, le flag est bien dans le text.
Serez-vous capable de résoudre tous les calculs demandés ?
C’est accompagné du fichier suivant : question
C’est un fichier exécutable. Il suffit de le lancer.
what is the result of : 2+4/2-9-6/3+2*2-3-3*3-3*3+4+2*3+3*2+6/2-3+6-2-6+4+3*2-2+2*3+2*2 ?
C’est juste une opération. J’entre le résultat
8
congratulation !
what is the result of : 4*2-8/2+6/3+3-2*2-2*4-9+4/2+8/4+6/3-7+6/2+6+4*2-8/2+4+4+4/2+8/2-8/2-4 ?
Ah, OK. J’entre le nouveau résultat.
6
congratulation !
what is the result of : 6/2+8/4+1-9-6/2+6+8+5+4*2-4*2+3*2+9-8/2+4+9/3+5+3*3-1-9/3-2*4-4 ?
Et si j’entre volontairement un résultat faux ?
42
You're wrong, bye !
Là je n’ai testé que les trois premières opérations, mais je me doute qu’il doit y en avoir beaucoup plus. Il faut donc automatiser ça.
J’écris un simple script Bash qui va répondre en boucle aux questions proposées (attention les yeux, c’est déguelasse).
while [ 1 ]; do ./question <<<`cat reponses` | grep result | tail -n 1 | cut -d ' ' -f 7 >ques; echo $((`cat ques`)) >>reponses; done
En gros, voilà comment fonctionne le script :
reponse
question
, en lui passant les
réponses enregistrées dans le fichier reponses
reponse
a été entièrement dépilé, ça
envoie un résultat vide, donc faux. Le programme question
s’arrête alors| grep result | tail -n 1 | cut -d ' ' -f 7
permets
de ne retourner que la dernière question (la première dont je n’ai pas
la réponse)ques
echo
fait l’opération du fichier ques
et l’ajoute à la fin du fichier reponses
Une fois toutes les réponses trouvées, je ne peux pas voir le flag à
cause du grep
. Il faut que je lance le programme une
dernière fois à la main avec :
./question <<< `cat reponses`.
La dernière ligne me donne :
OK, The flag is : leHACK{519c58a4d508f1291b35}
Note : pour une raison inconnue, le script plante s’il y a deux
fois de suite un résultat identique. Dans ce cas il faut entrer le
résultat à la main dans le fichier reponse
, puis relancer
le script Bash à la main.
Note 2 : il y a 400 opérations en tout. J’ai mis le fichier
reponses
ici, si
ça vous intéresse.
Alors là, je n’ai pas compris le niveau de difficulté. Ce challenge était largement plus simple que le précédent.
Tu es bon en devienttes ? Si oui, trouve le nombre correct pour valider le challenge !
C’est accompagné du fichier suivant : question
Là encore, c’est un fichier exécutable. Je le lance donc, et j’obtiens :
Welcome to the guessing game! try to find my secret number!
Je tente une réponse au hasard :
> 42
That's not my secret number!
Il faut juste trouver un nombre, qui fait office de mot de passe. Il suffit de tous les tester. Je fais une simple boucle en Bash (attention les yeux, c’est déguelasse) :
for i in {0..1000000}; do ./guessy <<<$i | grep -v 'Welcome to the guessing game' | grep -v 'not my secret number'; done
Ce script va tester toutes les combinaisons de nombres en entrée
entre 0
et 1000000
. Les deux grep
servent à filtrer l’affichage pour ne pas avoir la question ni le mesage
d’erreur. Ainsi, seul le message de succès s’affichera. Le script me
retourne :
grep: (entrée standard) : fichiers binaires correspondent
> O_o How did you find my secret number ?!?
Congratulations! You can validate with:
J’ai un message de félicitation, mais je n’ai pas le flag. Ce n’est
pas grave, il suffit de procéder par dichotomie. Je recommence le même
script, mais en testant les nombres de 0
à
100000
, puis de 0
à 10000
, et
ainsi de suite. Quand l’intervalle est suffisament petit, je termine à
la main. Le résultat est donc :
./guessy
Welcome to the guessing game! try to find my secret number!
> 193
O_o How did you find my secret number ?!?
Congratulations! You can validate with:
leHACK{y0u_d1d_f1nd_my_53cr37_numb3r}�
Je ne l’ai remarqué qu’en écrivant cet article, mais il était
possible d’aller beaucoup plus vite. Mon script Bash n’affiche pas le
flag à cause de l’erreur
grep: (entrée standard) : fichiers binaires correspondent
.
La ligne retournant le flag est malformée. Il y a un caractère binaire
dessus, ce qui fait penser à grep que toute la ligne est au format
binaire, et donc il ne l’affiche pas.
Il suffisait de passer le paramètre -a
aux deux
grep
pour que le flag s’affiche, sans avoir à faire la
phase de dichotomie.
Il y beaucoup de challenges que je n’ai pas réussi, mais la plupart je ne les ai même pas tentés. Je vais indiquer ici uniquement ceux pour lesquels j’ai cherché.
Trouvez le flag
Je me doute bien que si m’image est au format PNG, c’est pour garder les pixels 100% intacts. Mais j’ai eu beau retourner l’image dans tous les sens, je n’ai rien trouvé. J’ai même utilisé TinEye pour retrouver l’image d’origine, mais mis à part les logos elle a zéro pixel de différence avec l’image du challenge.
Peu avant sa re-disparition mystérieuse annuelle, un ami vous a re-demandé de l'aide pour analyser ce fichier. "Surement un coup des illuminati" affirmait-il encore...
Le message caché contenu dans le fichier commence par les caractères "X11N35". Il doit être encapsulé dans "leHACK{}" format du flag : leHACK{X11N35...}
La personne sur la photo est John Gardner, un physicien aveugle. Le titre du challenge fait référence au Roi Lear, une pièce de théâtre de William Shakespeare.
Il y a probablement de la stéganographie dans cette image. J’ai
essayé des mots de passe divers et variés avec steghide
, en
m’inspirant des deux éléments ci-dessus, mais ça n’a rien donné.
Le flag est dans le texte
Url: https://static.wargame.rocks/yetanotherwhatelse/README.txt
Ce coup-ci, le mot texte
est bien écrit. Je fais un
curl -i https://static.wargame.rocks/yetanotherwhatelse/README.txt
pour voir le contenu de la page, en incluant les en-têtes.
HTTP/2 200
accept-ranges: bytes
alt-svc: h3=":443"; ma=2592000
content-type: text/plain; charset=utf-8
etag: "d2iryy194i8b5d"
last-modified: Sat, 06 Jul 2024 21:30:54 GMT
server: Caddy
vary: Accept-Encoding
content-length: 193
date: Sat, 06 Jul 2024 23:58:06 GMT
Le flag est dans le text
Vous ne le voyez probablement pas, mais il y a un problème dans le
contenu de la page. Ca se voit mieux avec un hexdump
.
00000000 4c 65 20 66 6c 61 67 20 65 73 74 20 e2 80 ab e2 |Le flag est ....|
00000010 80 8c e2 80 8c e2 81 a0 e2 80 8d e2 80 8b e2 81 |................|
00000020 a0 e2 81 a0 e2 80 8e e2 80 8b 64 61 6e 73 20 6c |..........dans l|
00000030 65 20 74 65 78 74 0a |e text.|
00000037
Il y a des caractères non affichables dans le texte. Je n’ai pas trouvé quoi en faire, mais j’ai remarqué qu’en prenant les octets par groupes de trois, il y avait une certaine répétition.
e2 80 ab
e2 80 8c
e2 80 8c
e2 81 a0
e2 80 8d
e2 80 8b
e2 81 a0
e2 81 a0
e2 80 8e
e2 80 8b
e2 80 8c
e2 80 8e
e2 80 ab
e2 80 8d
e2 81 a0
e2 81 a0
e2 80 8f
e2 80 aa
e2 80 8e
e2 80 ab
e2 80 8f
e2 81 a0
e2 80 8e
e2 81 a0
e2 80 8d
e2 80 8d
e2 80 ab
e2 80 8b
e2 80 8f
e2 80 ab
e2 80 8e
e2 81 a0
e2 81 a0
e2 80 8d
e2 80 ab
e2 80 8b
e2 80 8f
e2 80 8b
e2 80 8e
e2 81 a0
e2 80 8e
e2 80 8b
e2 80 8e
e2 80 ab
e2 80 8f
e2 81 a0
e2 80 8b
e2 81 a0
e2 80 aa
e2 80 8d
e2 80 8b
e2 80 8f
e2 80 8f
e2 81 a0
e2 80 aa
e2 80 8f