Slide 30
Slide 30 text
2023/09/03 SECCON Beginners Live 2023 | #ctf4b
rewriter / ソースコード
[...]
void win() {
execve("/bin/cat", (char*[3]){"/bin/cat", "flag.txt", NULL}, NULL);
}
int main() {
unsigned long target = 0, value = 0;
char buf[BUFF_SIZE] = {0};
show_stack(buf);
printf("Where would you like to rewrite it?\n> ");
buf[read(STDIN_FILENO, buf, BUFF_SIZE-1)] = 0;
target = strtol(buf, NULL, 0);
printf("0x%016lx = ", target);
buf[read(STDIN_FILENO, buf, BUFF_SIZE-1)] = 0;
value = strtol(buf, NULL, 0);
*(long*)target = value;
}
[...]
30
flagを表示する関数
スタックの状態を表示する
指定されたアドレスの値を
書き換える