首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在gdb中运行,但未超出gdb。

在gdb中运行,但未超出gdb。
EN

Stack Overflow用户
提问于 2014-02-19 22:24:58
回答 1查看 1.4K关注 0票数 0

我正试图用一些外壳代码来生成一个shell。有效载荷在程序本身中,但是,当我运行然后单独运行程序时,我会得到一个分段错误,但是当运行在gdb中时,我的shell会打开。有人能指出问题的所在吗?

代码语言:javascript
复制
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
$ 
$
EN

回答 1

Stack Overflow用户

发布于 2014-02-20 02:34:20

问题是什么?

首先,由于您确实得到了一个core,所以您可以通过查看它来了解崩溃的原因。

其次,GDB默认禁用地址随机化(ASLR) (以使您更容易调试,因此所有东西都在一个位置),而在GDB之外运行a.out很可能有完整的a.out,这可能解释了有和不带GDB的a.out的不同行为。

您可以全局禁用ASLR:

代码语言:javascript
复制
sudo -c "echo 0 > /proc/sys/kernel/randomize_va_space"

也可以在GDB中启用随机化:

代码语言:javascript
复制
(gdb) set disable-randomization off
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21893891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档