IDA看一下,发现程序里有system函数,
查看伪代码,可以利用这两个read,在第一个输入,输入/bin/sh,第二个用来调用payload
双击一下第一行这里,刚好在bss段,可以填充/bin/sh
第二个read用来调用payload
然后下面还有个check
看代码,可以发现两行过滤,第一行过滤了cat,第二行过滤了一些字符串,这里就不挨个转换了,可以自己转换成ASCII看看,总之就是/bin/sh没法输入进去,最后一行还有个return close(1),是关闭标准输出的意思
有一个绕过方法就是system("$0")==system("/bin/sh"),事实证明用这个可以获取shell
但是获取shell之后他还有过滤,不能用cat,所以要想办法绕过
上面说了check函数里最后一行return close(1),所以可以用这种方式查看flag,这里我是本地建了个flag文件
具体为什么用这种方法我也还没搞明白,明白之后再补上
代码:
我是小白,有写的不对的地方欢迎师傅们指正!