Polar-pwn-wp
sandbox
先将文件拖入kali中检查一下,发现是一个六十四位的elf,开启了NX保护以及Canary。
将该文件拖入IDA中发现有一个box函数,点击进入box函数,我们发现定义了一个字符buf,是用户输入的,但是其用if对字符buf进行判断,进而过滤了一些关键字,若我们输入相应的关键字,该程序就会直接结束。
我们再进行nc连接发现里面有flag,但是由于其过滤了cat、flag两个关键字,因此我们需要进行绕过,从而获取flag。
还有一种方法就是,因为若我们不输入关键字,在box函数最后会执行system函数,由于无法输入/bin/sh与sh进行提权,那么我们可以利用system(‘$0’)来提权,因此exp可以如下编写:
from pwn import* |
creeper
同样先拖进kali观察一下,64位elf,没有什么保护。
将其拖入IDA中观察,发现有一个game函数,点击进入,同样是定义了一个字符buf,由我们输入,并且发现system函数,但是对输入的字符长度限制为15,因此我们只需要输入的字符的长度为15就行了。(注意:如果是nc连接,最后的回车也算是一个字符;如果是用sendline上传payload,最后也有一个回车;如果是send,最后就没有回车。
中间几道太简单了,在这里就没进行记录,记录一下有意义的题。
name4
步骤与前面几道题差不多,就不再赘述了。在这里只做分析。
经过检查可以发现没有开启任何保护,并且没有相关的后门函数,因此可以用shellcode来获权。
通过ida我们可以发现一个start函数,跟进发现存在栈溢出,而且name与::s均在bss段上,因此我们可以将shellcode写入二者之一,但是由于name是用来判断是否为0,只有其为0才会调用gets函数进行栈溢出,所以我们用“\x00”来进行绕过并将shellcode写入s中,最后再进行栈溢出,返回地址为s。下面为exp:
from pwn import* |