먼저 문제 파일을 다운 받고 ls -al로 권한을 확인했다.
swing_pwn_chall에 실행권한이 없어서 실행권한을 부여해주었다.
그리고 실행시켜 보니까 두 수의 덧셈 결과를 입력하라는 창이 계속 나왔다.
소스코드를 확인해보자
소스코드를 보니까 20번 반복 후에 모두 맞으면 flag가 뜨는 것 같다.
그래서 이 문제를 풀기 위해 solve.py를 만들어보려고 한다.
(근데 우분투에 vi 편집기가 말썽이라 칼리로 가서 풀어보았다.)
결국 이 코드로 성공할 수 있었다.
p.recvuntil(':')로 계산해야 하는 숫자 앞인 :까지 가고
a = p.recvuntil('+')[:-1]로 +앞까지 가서 첫 번째 숫자를 읽어 a에 저장한다. 이때 [:-1]은 p.recvuntil('+')만 하면 읽어야하는 숫자 이외에 +까지 읽어버리기 때문에 +앞까지만 읽기 위해서 넣어준다.
b = p.recvuntil('=')[:-1]로 =앞까지 가서 두 번째 숫자를 읽어 b에 저장한다.
result에 두 숫자의 덧셈 결과를 저장하고
p.sendline(str(result))으로 계산한 답을 프로그램에 입력한다.
solve.py를 실행했더니 이렇게 성공메시지가 뜨는 것을 확인할 수 있었다.
그래서 성공코드를 가지고 우분투에서도 시도해봤다.
근데 이렇게 자꾸 오류가 뜨는데
pwntools 다운받을 때도 오류가 떠서 아마 pwntools가 제대로 다운이 안된 것 같다.
관련해서 많이 자료 찾아보고 시도했지만 해결되지 않았다.
+) shshsh.tistory.com/168?category=612438
기장님이 공유해주신 링크로 pip 관련 오류는 해결되었지만, Solve.py 실행 시 ImportError은 계속 일어난다.
Solve.py 전에 python3도 같이 써봤는데도 같은 오류가 발생했다.
pip list로 확인해봤더니 pip은 잘 설치되었는데 pwntools가 없어 다시 pwntools 다운받아 주었더니 해결할 수 있었다.
성공!
'Pwnable' 카테고리의 다른 글
[pwnable.kr] bof (0) | 2021.05.18 |
---|---|
[Pwnable] GDB로 코드 분석 (0) | 2021.05.11 |
[Pwnable] GDB 사용방법 정리 (0) | 2021.05.11 |
[pwnable.kr] collision (0) | 2021.05.05 |
[Pwnable] 리눅스 메모리 구조 (0) | 2021.03.31 |
댓글