https://dreamhack.io/wargame/challenges/44
command-injection-1
특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. Reference Exercise: Command Injection
dreamhack.io

답
일단 웹 들어간다.

이렇게 되어있고 여기서 Ping 페이지에 들어가 보면

이렇게 Host를 입력하는 창이 뜬다.
그럼 요로코롬 나와 있는걸 봤는데. 그럼 이제 소스 코드를 한번 봐보자
소스코드
이제 웹페이지는 모두 둘러보았고 소스 코드를 봐보자

이 코드에서 쌀라쌀라 뭐라 하고 있지만
중요한 부분은

이 부분이다. 이 부분만 있으면 문제를 풀 수 있다.
일단 이 부분은 쉘 명령어를 쓰게 해준다.
그리고 우리가 입력하는 부분은 host이다. 그리고 그 host는 cmd에 저장되고
그 밑에 코드에서 cmd를 쉘 명령어로 쓸 수 있다.
자 이제 우리가 어떻게 입력 해야 할까?
먼저
https://iloveprogramming.tistory.com/243
[Dream hack] Logical Bug: Command Injection
들어가며서론우리가 프로그램을 개발할떄, 코드를 작성하는 것보다이미 설치된 소프트웨어를 사용하는 것이 더 쉬울 때가 있따. 뭐, 파일 내용출력하는 셸프로그랢을 작성에서 파일 출력 코
iloveprogramming.tistory.com
요거를 참고한다.
여기서 우리는 ';'를 쓰면 명령어를 하나 더 쓸 수 있다.
그리고 문제에서 flag가 flag.py에 있다고 한다.

그러니까 이제 flag.py의 내용을 출력해야 한다.
"; cat flag.py #
이렇게 적은 이유는 일단
cmd = f'ping -c 3 "{host}"'
자 이렇게 있으면 위에 처럼 작성하게 된다면
cmd = f'ping -c 3 ""; cat flag.py #"'
이렇게 된다 그러면 뒤에 cat flag.py의 뒤는 모두 주석 처리가 되서
cat flag.py를 할 수 있다.
자 그래서 이제 👇여기에다가 입력해준다.

어라 이런 엄청난 일이
입력하게 된다면 큰 문제가 생긴다.

왜냐 이건 정규 표현식으로 막아주고 있다.
그래서 우리는 이걸 지워 줄 거다.
이 필터링을 지워서 우리가 원하는 명령어를 실행되게 할 수 있다.
자 개발자 도구로 보자

그러면 이렇게 되어있는데 여기서 pattern을 모두 지워주면 필터링을 우회할 수 있다.
자 이걸 지워주고 Ping을 누르면
flag가 뜬다.
참고
https://iloveprogramming.tistory.com/240
[Dream hack] cmd_center
https://dreamhack.io/wargame/challenges/117 cmd_centerDescription IP를 확인할 필요가 없습니다! 혹시 다른 명령어는 못쓰나요? 다른 명령어를 사용했다면 플래그를 획득하세요! References https://dreamhack.io/learn/2/1#
iloveprogramming.tistory.com
이 문제랑 비슷하다.
끝
'hacking > web' 카테고리의 다른 글
| [Dream hack] phpreg (1) | 2025.03.03 |
|---|---|
| [Dream hack] ex-reg-ex (0) | 2025.03.03 |
| [Dream hack] Background: Web (0) | 2024.08.06 |
| [Dream hack] Introduction (0) | 2024.06.04 |
