首页
社区
课程
招聘
未解决 [求助]为什么我的Linux栈溢出利用在GDB里能成功,但在普通shell坏境中却只是 "Segmentation fault (core dumped)" ?
发表于: 2018-11-2 23:17 1795

未解决 [求助]为什么我的Linux栈溢出利用在GDB里能成功,但在普通shell坏境中却只是 "Segmentation fault (core dumped)" ?

2018-11-2 23:17
1795
shellcode功能是执行/bin/sh返回一个shell,可以确定EIP已经正确覆盖,并且覆盖上去的就是shellcode的起始地址,但却只能在gdb中利用成功,在普通shell中则是单纯的崩溃。
怀疑是GDB和普通shell的栈或者运行机制不一样?

#在普通shell中:


#在GDB中:


PS:系统为Ubuntu14.4 ,实验前已经关闭ASLR、Stack Cookie,以及设置了栈为可执行状态。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 4207
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可以用cyclic pattern payload,确定一下eip是被payload里面具体什么地方的内容替换掉的
2018-11-3 02:04
0
雪    币: 2063
活跃值: (1752)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
taxueyouhen 可以用cyclic pattern payload,确定一下eip是被payload里面具体什么地方的内容替换掉的
怎么使用
2018-11-3 11:34
0
雪    币: 60
活跃值: (414)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
4
因为gdb里面的环境变数什麽的跟外面运行的时候不一样,导致stack pointer在gdb和外部环境有差
要嘛用gdb attach的方式连过去(需要有个可以卡住的地方让你attach,像是任何需要手动输入的function)
要嘛不要跳到stack上,想办法把shellcode放到一个不会变动的位址(像是bss段上,需要一点更难的技巧)
要嘛用github上别人写好的script,把外部运行的stack address调成跟gdb里面一样(https://github.com/hellman/fixenv)
最后于 2018-11-3 12:55 被返無歸一编辑 ,原因:
2018-11-3 12:48
0
雪    币: 81
活跃值: (165)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
davidangle 怎么使用
这里有教程:https://blog.csdn.net/qq_36992198/article/details/80329627
2018-11-3 14:23
0
雪    币: 81
活跃值: (165)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
taxueyouhen 可以用cyclic pattern payload,确定一下eip是被payload里面具体什么地方的内容替换掉的
多谢大佬,通过cyclic确认了偏移,和之前一样确定offset是516 bytes,但在普通shell下还是一样奔溃,无论用什么payload,查看core dump都是 " 0x0000000200000000 in ?? () "
2018-11-3 14:29
0
游客
登录 | 注册 方可回帖
返回
//