mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-24 19:21:15 +07:00
fix errors (#22)
* fix errors * Update 6.1.4_pwn_backdoorctf2017_fun_signals.md
This commit is contained in:
parent
7768369784
commit
5ccea962df
@ -228,7 +228,7 @@ gdb-peda$ x/s 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 如下:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user