من یک رویداد CTF (که تمام شده است) بازی کردم و یک باینری را دیدم. هدف این است که عملکرد درست_pw بدون دانستن رمز عبور تعیین شده توسط سرور در محدوده اجرا شود. من می دانم که یک سرریز بافر وجود دارد زیرا می توانم ثبت نام ebx را سرریز کنم اما چرا؟ چرا eBx ثبت نام می کند و چه عملکرد خطرناک ایفا می کند از آنجا که تنها عملکردی که ورودی کاربر را اجرا می کند، fgets است که امن است
این تابع اصلی جداسازی شده است:
0x0000555555554838 <+0>: push rbx
0x0000555555554839 <+1>: اضافه کردن rsp، 0xffffffffffffff80
0x000055555555483d <+5>: mov rdi، rsp
0x0000555555554840 <+8>: mov ecx، 0x10
0x0000555555554845 <+13>: mov eax، 0x0
0x000055555555484a <+18>: نمایندگی QWORD PTR es: [rdi]، rax
0x000055555555484d <+21>: lea rcx، [rip+0xffffffffffffffe4] # 0x555555554838
0x0000555555554854 <+28>: lea rdx، [rip+0xffffffffffffffc8] # 0x555555554823
0x000055555555485b <+35>: lea rsi، [rip+0xffffffffffffff98] # 0x5555555547fa
0x0000555555554862 <+42>: lea rdi، [rip+0x11e] # 0x555555554987
0x0000555555554869 <+49>: تماس 0x5555555546c0
0x000055555555486e <+54>: lea rdi، [rip+0x15b] # 0x5555555549d0
0x0000555555554875 <+61>: تماس 0x5555555546a0
0x000055555555487a <+66>: mov rbx، rsp
0x000055555555487d <+69>: mov rdx، QWORD PTR [rip+0x2007dc] # 0x555555755060
0x0000555555554884 <+76>: mov esi، 0x4cc
0x0000555555554889 <+81>: mov rdi، rbx
0x000055555555488c <+84>: تماس 0x5555555546d0
0x0000555555554891 <+89>: mov esi، 0xa
0x0000555555554896 <+94>: mov rdi، rbx
0x0000555555554899 <+97>: تماس 0x5555555546b0
0x000055555555489e <+102>: test rax، rax
0x00005555555548a1 <+105>: je 0x5555555548a6
0x00005555555548a3 <+107>: mov BYTE PTR [rax]، 0x0
0x00005555555548a6 <+110>: lea rdi، [rip+0xee] # 0x55555555499b
0x00005555555548ad <+117>: تماس 0x555555554690
0x00005555555548b2 <+122>: mov rdi، rsp
0x00005555555548b5 <+125>: mov rsi، rax
0x00005555555548b8 <+128>: تماس 0x5555555546e0
0x00005555555548bd <+133>: آزمون eax، eax
0x00005555555548bf <+135>: و غیره 0x5555555548d1
0x00005555555548c1 <+137>: تماس بگیرید 0x5555555547fa
0x00005555555548c6 <+142>: mov eax، 0x0
0x00005555555548cb <+147>: زیر rsp، 0xffffffffffffff80
0x00005555555548cf <+151>: pop rbx
0x00005555555548d0 <+152>: ret
0x00005555555548d1 <+153>: تماس 0x555555554823
0x00005555555548d6 <+158>: jmp 0x5555555548c6
من واقعا خوشحال خواهم شد اگر کسی این سرریز را برای من توضیح دهد