加载头像

wustctf2020_closed

Ubuntu16.04


0x01


checksec

1
2
3
4
5
6
[*] '/home/zelas/Desktop/pwn/wustctf2020_closed/wustctf2020_closed'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE (0x400000)

IDA

vulnerable()

1
2
3
4
5
6
7
__int64 vulnerable()
{
puts("HaHaHa!\nWhat else can you do???");
close(1);
close(2);
return shell();
}
1
2
3
4
5
// attributes: thunk
int close(int fd)
{
return close(fd);
}

0x02


思路

close(1)关闭了标准输出
close(2)关闭了标准错误

我们只剩下标准输入,并且看到程序会返回shell(0是标准输入,1是标准输出,2是标准错误)
可以对stdout重定向,将文件描述符 1 重定向到文件描述符 0 :
因此这题不用写exp,直接执行 execv 1>&0 ,也就是把标准输出重定向到标准输入,因为默认打开一个终端后,0,1,2都指向同一个位置也就是当前终端,所以这条语句相当于重启了标准输出,此时就可以执行命令并且看得到输出了


评论
✅ 你无需删除空行,直接评论以获取最佳展示效果
引用到评论
随便逛逛博客分类文章标签
复制地址关闭热评深色模式轉為繁體