https://dreamhack.io/wargame/challenges/44
command-injection-1
특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. Reference Introduction of Webhacking
dreamhack.io
input에 ip를 넣어 주면 ping을 보내 주는 사이트이다.
플래그가 flag.py에 있으므로 cat을 이용해 까 주려고 했지만, 요청한 형식과 일치 시키라고 뜬다.
개발자 도구를 열고 sources를 확인해 보면
<input type="text" class="form-control" id="Host" placeholder="8.8.8.8" name="host" pattern="[A-Za-z0-9.]{5,20}" required>
이런 코드가 있는 것을 볼 수 있다.
<input> 태그의 pattern 속성
pattern = "[A-Za-z0-9.]{5,20}"
[A-Za-z0-9.]: 대소문자 알파벳, 숫자, 마침표에 대응
{5, 20}: 최소 길이와 최대 길이를 나타냄. 따라서 입력 문자열의 길이는 5~20이 되어야 함
<input> 태그의 required 속성
- 폼 데이터가 서버로 제출되기 전에 반드시 채워져 있어야 하는 입력 필드를 명시
- 명시하지 않으면 자동으로 false 값을 가짐
input 태그의 pattern 속성으로 명령어가 입력될 수 없게 되어 있다.
이는 개발자 도구 -> console에서 document.designMode = 'on' 을 입력해 주고, elements에 들어가서 pattern 부분만 지워 주면 된다.
이렇게 코드를 수정해 주고 다시 입력으로 127.0.0.1; cat flag.py를 넣어 주면
다음과 같이 에러가 뜬다.
ping -c 3 "127.0.0.1; cat flag.py" 이런 식으로 커맨드가 들어가니 입력을 127.0.0.1"; cat flag.py" 이렇게 넣어 주면 될 것 같다.
플래그가 잘 뜨는 모습이다.
'드림핵 워게임' 카테고리의 다른 글
[드림핵/워게임] web-ssrf (0) | 2023.08.03 |
---|---|
[드림핵/워게임] Carve Party (0) | 2023.08.03 |
[드림핵/워게임] simple_sqli (0) | 2023.08.03 |
[드림핵/워게임] basic_exploitation_001 (0) | 2023.07.30 |
[드림핵/워게임] basic_exploitation_000 (0) | 2023.07.30 |