Pandora Box – Taso 5

Kyseessä näyttää olevan Pandora Boxin viimeinen taso. Sillä level5 binäärin näyttää omistavan root.

level4@pb0x:~$ ls -l
-rwsr-xr-x 1 root   level4 596244 Jan  3  2015 level5

Tällä kertaa ohjelmalla näyttäisi pystyvän säilömään kymmenen eri numeroa.

level4@pb0x:~$ ./level5 
#########################
# Simple Number Manager #
#########################
This tool allows you to store and view upto 10 numbers
in a array.
Type exit to close or help for a command list
> help
commands:
exit        : Close number manager
set         : Store a number
get         : View a number
> set
> id: 1
> value: 10
Value stored
> get
> id: 1
value: 10
> 

Tallennusslotin valinnassa näyttäisi olevan jotain jännyyksiä. Koska seuraavanhan ei pitäisi toimia.

> set
> id: 99 
The array only has 10 entry's, use index 0..9
> set
> id: -1
> value: 15
Value stored
> get
> id: -1
value: 15
> 

Eli pystymme jollain tapaa kirjoittamaan yli muistin, mutta minne? Aika kaivaa IDA ja alkaa selvittämään, mitä konepellin alla tapahtuu. Ongelma löytyy aika nopeasti. Koska ohjelma tarkistaa ainoastaan onko luku pienempi tai yhtäsuuri kuin 9.

int tmp = (int)strtoul(&buf, 0, 10);
uint8_t idnum = (uint8_t)tmp;
if ( tmp <= 9 ) { 	if ( readline(&buf, 16, "> value: ") )
	{
	  store[idnum] = strtoul(&buf, 0, 10);
	  fwrite("Value stored\n", 1, 13, stderr);
	}
	else
	{
	  fwrite("Bad value\n", 1, 10, stderr);
	}
}

Toinen huomio on, että varsinainen indeksi on vain tavun mittainen. Joten käyttämällä negatiivisia lukuja pystymme kirjoittamaan numerosäilön yli indekseihin store[10] – store[255]. Nämä arvothan sijaitsee pinossa, joten voimme kirjoittaa funktion paluuosoitteen yli ja muodostaa shellcoden normaalilla ROP kikkailulla, joka oikeestaan on ihan sama kun tasolla 4. Joten en tässä kohtaa varmasti turha käydä uudestaan läpi.

Ratkaisu kokonaisuudessaan löytyy tästä.

Kaikki ei kuitenkaan ollut vielä tässä. Vaikka koko systeemi on nyt rootattu, niin itse flagi on kryptattu.

Goobjob! It seems like you r00ted Pandora's box I hope you liked the challenges as much as I enjoyed making them.
 It's time for you to collect your flag, the only thing is that it's encrypted with RSA 256 bits, can you crack it?

 encrypted_flag: 0x41a31d931bd8c7dd1707942484075b4ae98a6e98c40a9b21f7424c7e91ac1fca

 PublicKey info
 --------------
 E: 0x10001
 N: 0xD4572CED12D668BC34A4F36311B9A80AB212D7986AA9417B6FD9D474076605F9


 Credits:
 Special thanks to Barrebas and Jelle for testing the challenges and the feedback, you guys r0ck!

Salauksessa on käytetty 256 bittistä RSA:ta ja tiedossa on julkinen avain. Joten tehtäväksi jää enää jakaa tekijöihin itse N. Näin lyhyellä avaimella tämä on onneksi vielä mahdollista käyttäen ihan raakaavoimaa.

Nyt kun selvillä on myös yksityinen avain, niin pystymme purkamaan salauksen ja flagi on napattu: {1_h4ck3d_4nd_r00t3d_pb0x!}.

This entry was posted in Jotain aivan muuta and tagged , , , , , . Bookmark the permalink.

3 Responses to Pandora Box – Taso 5

  1. HubertBom says:

    Hi Look what we have for you! a goodoffering
    Just click on the link below to qualify

    https://drive.google.com/file/d/1-7-j8r0iQNnJIb5c12TT5_mGPLcJXtrt/preview

  2. BarryRab says:

    Hey Look what we moored looking in the course of you! tactfulpresent
    Upstanding click

    https://drive.google.com/file/d/1Yx6XjIyhDFyns4PAutOGM29q_NO3RbBC/preview

Leave a Reply

Your email address will not be published. Required fields are marked *