首页
社区
课程
招聘
[原创]Pwn入门--简单的nx绕过
发表于: 2017-12-20 22:58 9521

[原创]Pwn入门--简单的nx绕过

2017-12-20 22:58
9521


通过查看代码,我们可以分析出,在readpw()这个函数中,read()函数可造成buf的溢出。

所以我们先手工输入字符,找到溢出的字符的位置,推荐使用abcdefghi…ABC…123这种方式来确定溢出长度,pwntolls中也可根据溢出的字符,来判断溢出位置。(@nbw:可以使用pattern来生成随机字符串)

图中显示溢出字符串为0x46454443即“CDEF”

首先是28个字符填充,其次跟着system()函数地址,exit()函数地址,/bin/sh地址。

函数调用栈(图一)


图二

如图一,为函数调用的栈结构,即32位模式下,函数参数通过栈传递,传递的位置为函数参数从右至左依此入栈,之后为父函数返回地址(函数调用地址的下一条指定地址)。从上面的第二张图中我们可以得知,函数调用完毕后,执行到ret指令时,将执行栈顶指针esp处内存所指向的地址。所以我们需要将system()函数的地址作为溢出函数父函数的返回地址,而将exit()函数的地址作为system()函数的返回地址(防止程序崩溃),将bin/sh作为参数传递给system函数。

  system()函数地址:  

/bin/sh地址:


exit()函数地址:


其中,被注释的代码作为远程调试使用。

在gdb中可以看到如下输出:


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

上传的附件:
收藏
免费 2
支持
分享
最新回复 (12)
雪    币: 9
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持!
2017-12-20 23:14
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
canary不需要绕过么? 
2017-12-21 09:20
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
4
楼主应该把bin发上来呢
2017-12-21 11:18
0
雪    币: 763
活跃值: (323)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
同意二楼师傅说的  没有绕过canary,我最开始以为是用mprotect这样的函数来修改内存属性呢.
2017-12-21 14:11
0
雪    币: 285
活跃值: (1095)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
6
nbw 楼主应该把bin发上来呢
关于bin,提供源码了,只需简单编译下就好了。
2017-12-21 16:34
0
雪    币: 285
活跃值: (1095)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
7
wx_对方正在输入…_973086 canary不需要绕过么?
这个没绕过也成功了,不知道问题出在哪里了
2017-12-21 16:35
0
雪    币: 285
活跃值: (1095)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
8
下次会把bin文件一起上传的
2017-12-21 16:36
0
雪    币: 26136
活跃值: (1409)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
nbw 楼主应该把bin发上来呢
膜拜大神!24篇全精华文章,好强势!
2018-3-1 00:40
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
10
整个系统的ASLR都没开吗
2018-3-2 07:31
0
雪    币: 285
活跃值: (1095)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
11
holing 整个系统的ASLR都没开吗
对的
2018-3-2 09:44
0
雪    币: 60
活跃值: (324)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
12
sudozhange 这个没绕过也成功了,不知道问题出在哪里了[em_31]
canary有分等级的......预设的好像只有几个function有放canary,从你的图中明显ret前没有检查canary有没有被破坏,所以有漏洞的function是没有插入canary

全开的话好像是fstack-protect-all的样子
2018-3-4 05:31
0
雪    币: 285
活跃值: (1095)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
13
返無歸一 canary有分等级的......预设的好像只有几个function有放canary,从你的图中明显ret前没有检查canary有没有被破坏,所以有漏洞的function是没有插入canary ...
哦哦,谢谢指出,学习了
2018-3-4 14:44
0
游客
登录 | 注册 方可回帖
返回
//