我正试图用一些外壳代码来生成一个shell。有效载荷在程序本身中,但是,当我运行然后单独运行程序时,我会得到一个分段错误,但是当运行在gdb中时,我的shell会打开。有人能指出问题的所在吗?
MrMox@ubuntu:~/folder$ ./a.out h h
Segmentation fault (core dumped)
MrMox@ubuntu:~/folder$ gdb -q a.out
Reading symbols from /home/folder/a.out...done.
(gdb) run h h
Starting program: /home/folder/a.out h h
process 22119 is executing new program: /bin/dash
$
$发布于 2014-02-20 02:34:20
问题是什么?
首先,由于您确实得到了一个core,所以您可以通过查看它来了解崩溃的原因。
其次,GDB默认禁用地址随机化(ASLR) (以使您更容易调试,因此所有东西都在一个位置),而在GDB之外运行a.out很可能有完整的a.out,这可能解释了有和不带GDB的a.out的不同行为。
您可以全局禁用ASLR:
sudo -c "echo 0 > /proc/sys/kernel/randomize_va_space"也可以在GDB中启用随机化:
(gdb) set disable-randomization offhttps://stackoverflow.com/questions/21893891
复制相似问题