fix errors (#22)

* fix errors

* Update 6.1.4_pwn_backdoorctf2017_fun_signals.md
This commit is contained in:
rubinsin 2019-08-18 14:36:54 +08:00 committed by Firmy Yang
parent 7768369784
commit 5ccea962df

View File

@ -228,7 +228,7 @@ gdb-peda$ x/s flag
而且 flag 就在二进制文件里,只不过是在服务器上的那个里面,过程是完全一样的。 而且 flag 就在二进制文件里,只不过是在服务器上的那个里面,过程是完全一样的。
首先可以看到 `_start` 函数里有两个 syscall。第一个是 `read(0, $rip, 0x400)`(调用号`0x0`),它从标准输入读取 `0x400` 个字节到 `rip` 指向的地址处,也就是栈上。第二个是 `sigreturn()`(调用号`0xf`),它将从栈上读取 sigreturn frame。所以我们就可以伪造一个 frame。 首先可以看到 `_start` 函数里有两个 syscall。第一个是 `read(0, $rsp, 0x400)`(调用号`0x0`),它从标准输入读取 `0x400` 个字节到 `rsp` 指向的地址处,也就是栈上。第二个是 `sigreturn()`(调用号`0xf`),它将从栈上读取 sigreturn frame。所以我们就可以伪造一个 frame。
那么怎样读取 flag 呢,需要一个 `write(1, &flag, 50)`,调用号为 `0x1`,而函数 `syscall` 正好为我们提供了 `syscall` 指令,构造 payload 如下: 那么怎样读取 flag 呢,需要一个 `write(1, &flag, 50)`,调用号为 `0x1`,而函数 `syscall` 正好为我们提供了 `syscall` 指令,构造 payload 如下: