Return-oriented programming (ROP) is a computer security exploit technique that allows an attacker to execute code in the presence of security defenses such as executable space protection and code signing. ~wikipediaTehnik ini bisa digunakan jika kita bisa overwrite alamat EIPnya ROP bisa digunakan mulai dari jump ke function lain lalu menggunakan argument tertentu dll.
contoh susunan payload untuk ROP
offset itu adalah nilai dari offset stack hingga ke eip , lalu system_1 disini gw menggunakan readelf untuk mendapatkan alamat function system , lalu alamat dari system_1 ini di pakai untuk mengoverwrite alamat eip jadi saat program running dia akan mengeksekusi si system , lalu fungsi dari “AAAA” itu apa ? jadi karna kita tidak ingin melakukan apa – apa lagi setelah program di running maka kita dapat memasukan junk data saja , namun jika ingin program menjalankan hal lain maka silahkan ubah nilai AAAA dengan alamat fungsi yang lu inginkan , terus disitu ada variabel bin_sh , bin_sh adalah variabel yang menyimpan nilai string “/bin/sh” dari binary tersebut , jadi kita tidak bisa langung input “/bin/sh” kecuali kita memanggil fungsi gets atau scanf lalu menyimpannya di variabel atau mungkin saja di bss , nilai string “/bin/sh” itu di dapat dari hasil penggunaan perintah find <nama yg ingin di cari> di gdb atau grep di gdb-peda.. , untuk kali ini mungkin sampai disini dulu aja pembahasan mengenai ROPp = “”p += “A”*offsetp += p32(system_1)p += “AAAA”p += p32(bin_sh)
0 comments:
Post a Comment