برخی از سوالات در مورد مهندس معکوس

این باینری از یک چالش CTF

2 راه برای حل این پیدا کردم، یکی از آن اجرا و پاک کردن سطر است، یک نقطه شکستن را اجرا کرده و نتیجه را در پرچم بعد از اتفاقی که در حال اجرا است، مشاهده می کند، دیگر سعی در درک

برخی از قطعات وجود دارد که حتی وقتی حل این چالش را نمی فهمم:

  1. چرا IDA من رشته را معکوس می کند (v6 باید Bkav باشد و v7 + v8 باید "امنیت" باشد

  2. همانطور که شما ببینید، char + v6 (Bkav) را به func01 و func02 منتقل می کنید، اما زمانی که من همین کار را انجام می دهم، پرچم اشتباه را می دهد، اما زمانی که من سعی می کنم "BkavSecurity" را به func01 و func02 منتقل کنم،

 اینجا را کلیک کنید

شما می توانید فایل را در اینجا پیدا کنید: https://www.sendspace.com/file/g7w8nz

مهندسی معکوس – سرریز بافر در این مونتاژ کجاست؟

من یک رویداد 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

من واقعا خوشحال خواهم شد اگر کسی این سرریز را برای من توضیح دهد