Как правильно переписать обратный адрес в этой маленькой программе? - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь переписать обратный адрес этой программы, поэтому, когда программа запрашивает, я ввожу: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBXBXXX, где «XXXX» - это адрес, который мне нужно разместить. Но когда я заменил «XXXX» на «\ xef \ x11 \ x40 \ x00», это

Я пытался использовать команду

printf "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBB\xef\x11\x40\x00" | ./buffer

Но я вижу, что некоторые символы не печатаются и отправляются неправильно. Я не думаю, что это из-за включения юникода в моем терминале, потому что, когда я ввожу printf "\x41", он возвращает "A". Я также пытался делать то же самое в GDB, но видел только, что программа падает со странным адресом (0x3961785c).

Вот код:

#include <stdio.h>

void return_input()
{
    char array[30];
    gets(array);
    printf("%s\n", array);
}

int main()
{
    return_input();
    return 0;
}

основной номер:

0x004011df <+0>:    push   %ebp
   0x004011e0 <+1>: mov    %esp,%ebp
   0x004011e2 <+3>: and    $0xfffffff0,%esp
   0x004011e5 <+6>: call   0x4011fb <__x86.get_pc_thunk.ax>
   0x004011ea <+11>:    add    $0x2e16,%eax
   0x004011ef <+16>:    call   0x4011a9 <return_input>
   0x004011f4 <+21>:    mov    $0x0,%eax
   0x004011f9 <+26>:    leave  
   0x004011fa <+27>:    ret 

disass return_input

   0x004011a9 <+0>: push   %ebp
   0x004011aa <+1>: mov    %esp,%ebp
   0x004011ac <+3>: push   %ebx
   0x004011ad <+4>: sub    $0x24,%esp
   0x004011b0 <+7>: call   0x4010b0 <__x86.get_pc_thunk.bx>
   0x004011b5 <+12>:    add    $0x2e4b,%ebx
   0x004011bb <+18>:    sub    $0xc,%esp
   0x004011be <+21>:    lea    -0x26(%ebp),%eax
   0x004011c1 <+24>:    push   %eax
   0x004011c2 <+25>:    call   0x401030 <gets@plt>
   0x004011c7 <+30>:    add    $0x10,%esp
   0x004011ca <+33>:    sub    $0xc,%esp
   0x004011cd <+36>:    lea    -0x26(%ebp),%eax
   0x004011d0 <+39>:    push   %eax
   0x004011d1 <+40>:    call   0x401040 <puts@plt>
   0x004011d6 <+45>:    add    $0x10,%esp
   0x004011d9 <+48>:    nop
   0x004011da <+49>:    mov    -0x4(%ebp),%ebx
   0x004011dd <+52>:    leave  
   0x004011de <+53>:    ret 
...