7주차_Webhacking 과제2 : dreamhack [command-injection-1]

2023. 11. 17. 18:38SWLUG/web hacking

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

 

command-injection-1

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

dreamhack.io

 

 

 

📌 내풀이 

 

 

일단 문제 제목부터 command injection이라고 힌트를 주고 있고, 문제 설명을 읽어보니 특정 host에 ping 패킷을 보내는 서비스고 command injection을 통해 플래그를 획득하라고 쓰여있다.

 

 

 

일단 파일을 다운받았다.

내용을 보니까 전형적으로 command injection에서 많이 쓰이는 형태인 것 같다.

서버를 생성해서 들어가봐야겠다.

 

들어가보니 이렇게 Home이 있고, ping을 할 수 있는 곳이 따로 있다.

그 아래는 host에게 ping패킷을 보내는 곳인 것 같다.

 

 

뭔가를 써내려가다보면 요청한 형식과 일치시키라는 말이 뜬다.

여기서 요청한 형식을 생각해보자.

 

 

 

 

 

우선 8.8.8.8을 입력해보았다. 

 

일단 실제 ping과 같은 내용이 나오고 있는 것을 확인했다.

 

위 서버 코드를 살펴보면 ping 기능을 입력받는 부분이 존재하고 {host}라는 입력값을 받는 걸 알 수 있는데 메타 문자로 변조된 공격코드를 {host} 부분에 삽입하면 command injection의 취약점이 발생한다는 걸 알 수 있다.

 

 

 

세미콜론(;)은 앞의 명령어의 에러 유무와 관계없이 뒷 명령어를 실행하는 즉 구분 자이지만 무조건 실행된다는 것을 알 수 있다.

 

 

아까부터 문제였던 요청한 형식과 일치시키라는 내용이다.

 

 

 

찾아보니 알파벳 대문자, 소문자 전부 허용, 숫자는 0-9까지 그리고 점 문자 허용, 마지막의 글자 수의 길이 5-20까지 허용 이런 내용이라고 한다.

결론은 위 정규표현식 조건에 해당하지 않는 세미콜론(:)과 같은 메타 문자는 사용이 안된다는 뜻이며 즉 필터링이 된다는 의미인 것 같다.

 

 

저 패턴을 우회하는 다양한 방법이 있다는데, 나는 배운대로 패턴을 지워버렸다.

오른쪽 마우스 버튼하고 편집해서 지워버리면 된다.

 

이제 풀어볼건데 과제에 주어진 답이랑은 달라야한다.!

 

이 위에꺼가 과제 답이다. 이건 안되니까 이걸 기반으로 변형을 해봐야지

 

오 됐다!

 

 

 

지난주, 지지난주가 좀 어려운 내용을 학습했다보니 ping은 상대적으로 수월하게 느껴진다.

과제 2 끝!

 

 

[ 참고 학습 자료 ]

 

https://mokpo.tistory.com/84

 

[dreamhack] command-injection-1 문제풀이

[WEB] command-injection-1 문제풀이 Command Injection 취약점이란 시스템 명령어를 쿼리문에 주입하여 취약한 변수를 통해 서버 운영체제에 접근하는 공격으로 shell)exec, eval, system 함수 등을 사용하여 발생

mokpo.tistory.com

드림핵(DreamHack) - 커맨드 인젝션 -1, Command Injection-1(풀이) (tistory.com)

 

드림핵(DreamHack) - 커맨드 인젝션 -1, Command Injection-1(풀이)

해당 문제는 드림핵의 커맨드 인젝션-1번 문제입니다. command injection-1 Command injection 말 그대로 명령어 삽입 공격인 것 같은데 이 문제에서 해당 기법을 처음 접해봤습니다. SQL Injection 처럼 명령

hobbylists.tistory.com