워게임/CTFlearn

[CTFlearn] Calculat3 M3 - 웹해킹 / Command Injection

SecurityMan 2022. 11. 27. 11:00

 

CTFlearn의 서른아홉번째 문제

 

이번에는 Hard 난이도의 웹해킹 문제이다.

 

사실 어떻게 보면 진짜 쉬운 문제인데

 

난이도가 Hard 라고 적혀있어서 어렵게만 생각하다가 

 

푸는데 시간이 좀 걸렸다.

 

반응형

 

 

문제 페이지에 접속하면 이렇게 계산기 하나가 나온다.

 

 

이렇게 수식을 입력하고 = 버튼을 누르면

 

화면 왼쪽 상단에 계산결과가 출력되는 간단한 기능을 가지고 있다.

 

 

F12를 눌러 개발자도구에서 해당 페이지의 js 코드를 살펴본다.

 

사용자에게 입력받은 수식을 eval 함수를 이용해 계산해서 출력해주는듯 하다.

 

 

온라인 컴파일러로 확인해보니 맞는것 같다.

 

eval 함수는 굉장히 강력하지만 악용될 경우 운영체제 명령어를 실행시키는데 사용될 수도 있다.

 

 

오랜만에 Burp Suite 를 이용해 문제를 풀었다.

 

= 버튼을 눌렀을 때 서버에 전달되는 요청 패킷을 캡쳐한 뒤

 

Send to Repeater 버튼을 눌러 Repeater 에서 문제를 풀었다.

 

expression 변수에 수식을 넣고 Send 버튼을 누르면

 

오른쪽 응답 패킷 위쪽 부분에서 결과를 확인할 수 있다.

 

 

이것저것 해보다가 이상한걸 발견했는데

 

expression 에 id 를 입력하면 문자 id가 그대로 응답 패킷에 출력되는 반면

 

ls 를 넣으면 응답 패킷에 ls ls 형태로 두번 출력되는것을 발견했다.

 

정확한 이유는 잘 모르겠지만 이걸로 ls 명령어를 이용해야할것이라 판단했다.

 

 

어이없게도 ;ls 라고 입력해주면 아주 간단히 풀리는 문제였다.

 

; 을 이용해 앞의 명령어를 종료시키고 그 뒤에 ls 를 붙혀 같이 실행되게끔 하는 것이다.

 

응답 패킷을 보면 ls 명령어 실행 결과가 보이고,

 

파일이름 중 하나에 플래그가 있는것을 볼 수 있다.

반응형