Pada artikel sebelumnya kita membahas tentang bagaimana mengeksploitasi kelemanan buffer overflow menuju shellcode yang telah dibuat. Namun, kali ini kita akan membahas bagaimana jika proteksi No eXecution (NX) dinyalakan?
Dengan kondisi NX enable, maka program tidak dapat mengeksekusi shellcode yang berada pada buffer. Untuk mengatasi kondisi ini dapat dilakukan dengan ROP (Return Oriented Programming).
Artikel ini masih menggunakan pembelajaran yang ada pada repo https://github.com/nnamon/linux-exploitation-course/blob/master/lessons/6_bypass_nx_rop/lessonplan.md.
[binary]
Hasil checksec NX dalam keadaan enable, sehingga cara exploit yang sebelumnya tidak akan berjalan pada kasus ini.
Didapat 148 byte sebelum mencapai return address, lain dengan exploit pada artikel sebelumnya, return address kali ini akan diisi dengan ROP Gadget yang disusun dengan menggunakan ROPgadget.
ROPgadget --binary ../Downloads/1_staticnx --ropchain
Maka, payload yang akan dibuat menjadi : 'A' * 148 + ROP gadget
jika disatukan menggunakan pwntools, kode lengkapnya seperti dibawah ini:
Pada akhir artikel tersebut, terdapat pertanyaan :
However, using this payload in a modified script does not work. Can you
figure out why and fix it?
Itu terjadi karena adanya character null byte yang mengiterupsi shellcode yang dibuat. Agar ropgadget yang dibuat menggunakan ropper berjalan, maka option menghilangkan null byte harus disertakan:
ropper --file ../Downloads/1_staticnx --chain execve --badbytes 000a0d
Kombinasikan dengan pwntools, maka kode lengkapnya seperti ini:
No comments:
Post a Comment