<문제 링크>
https://dreamhack.io/wargame/challenges/44/
command-injection-1
특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. Reference Introduction of Webhacking
dreamhack.io
<나의 풀이>
1. 문제 링크 접속, 페이지 작동 확인
문제 링크 접속 첫 화면
상단 Ping탭 클릭 시 화면
여기에 8.8.8.8을 입력해 어떻게 작동하는지 보기로 했다.
ping 전송 결과 내용이 확인된다.
2. 메타문자 입력 검사 우회
파일 목록을 확인해 보고자 리눅스 다중명령어(하나의 라인에서 여러 명령어를 실행할 수 있도록 하는 기호)인 세미콜론(;)을 넣어보려고 했지만 '요청한 형식과 일치시키세요.'라는 경고가 뜨며 값 입력이 되지 않았다.
개발자 도구 Elements 탭에서 이 페이지의 html코드를 살펴보니 입력값을 검사하는 코드(빨간 밑줄)가 있는 것을 볼 수 있었다. 이 코드는 A부터 Z까지, a부터 z까지, 0부터 9까지, 그리고 . 만 허용한다는 내용으로 보인다. 다중명령어 기호를 이용하기 위해선 이 검사를 없애야 한다. 더블클릭해서 이 줄을 수정할 수 있으므로 pattern부터 20}"까지만 지워보았다.
html코드 수정 후 위 사진처럼 다시 다중명령을 입력했는데 이번엔 에러가 발생했다. 내가 입력한 값이 ping -c 3 "입력값" 형태의 명령어가 되는건데, 우회가 필요한 부분이다.
오류 우회를 위해 실행하고자 하는 명령을 큰따옴표 안에 넣었더니 드디어 명령이 정상적으로 실행되었다. ls(파일 목록 확인)명령을 실행시키니 flag가 담겨있는 flag.py파일도 확인할 수 있다.
3. 플래그 획득 위한 페이로드 작성
다중명령어 실행을 위한 우회 방법을 알아냈으니 flag.py파일 내용 확인(cat) 명령을 넣으니 플래그를 획득했다.
FLAG = DH{pingpingppppppppping!!}
<풀이 요약>
1. 문제 링크 접속, 페이지 작동 확인
2. 메타문자 입력 검사 우회
3. 플래그 획득 위한 페이로드 작성
<이 문제를 통해 배운 것>
command injection의 개념
메타문자의 정의, 예시
command injection 실행 방법
입력값 검사 우회 방법
개념이 잘 이해되지 않아도 일단 문제 실습을 해 보면 나중에 이해가 되기도 한다는 것
'해킹 공부 > 웹 해킹' 카테고리의 다른 글
Webhacking.kr_old 26_WriteUp (preg_match, urldecode) (0) | 2023.08.07 |
---|---|
Dreamhack_image-storage(파일 업로드 공격) (0) | 2022.02.13 |
Dreamhack_csrf-1(CSRF 취약점) (0) | 2022.02.05 |
Dreamhack_csrf-2(CSRF 취약점) (0) | 2022.02.05 |
dreamhack xss-2(XSS 방화벽 우회) (0) | 2022.01.30 |