[WebHacking][DreamHack][WarGame] command-injection-1 Write-Up

marceline·2024년 6월 5일
0

[WebHacking]

목록 보기
8/10

Level1) command-injection-1


문제설명

https://dreamhack.io/wargame/challenges/44

특정 Host에 ping 패킷을 보내는 서비스입니다.
Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다.


문제분석

처음 웹 사이트에 접속하게 되면, ‘/ping’ page 에서 아래와 같은 페이지가 보인다.

‘8.8.8.8’ 로 요청을 보내게 되면, 아래와 같이 결과가 나온다.

이때, ‘flag.py’ 를 읽기 위해서 명령어 ‘cat’ 을 사용한다면, 요청한 형식과 일치시키라는 경고문이 뜨게 된다.

해당 입력 부분을 개발자도구의 요소검사를 이용하여 살펴보면, <input> 태그에서 ‘pattern’ 속성을 사용하여 검사하고 있다.

[A-Za-z0-9.]: 이 부분은 입력 값이 대문자(A-Z), 소문자(a-z), 숫자(0-9), 또는 점(.) 중 하나로 시작해야 함을 의미한다.

{5,20}: 이는 앞서 지정된 문자 클래스([A-Za-z0-9.])에 속하는 문자가 최소 5개에서 최대 20개 사이여야 함을 지정하는데, 입력 값의 길이가 5에서 20 사이의 문자열이어야 하며, 이 범위를 벗어나면 유효하지 않은 것으로 간주된다.

따라서 해당 부분을 삭제한 후 ‘8.8.8.8; cat flag.py’ 요청을 보내게 되면, 아래와 같은 결과가 나온다.

“8.8.8.8; cat flag.py” 에서 더블쿼터의 위치 및 갯수가 적절하지 않다. 따라서 아래와 같이 수정해야한다.


Exploit

8.8.8.8”; cat “flag.py


위와 같이 FLAG를 얻을 수 있다.

0개의 댓글