이번에는 드림핵에서 command injection을 풀어보았다.
보안에 아직 응애수준이라... 이런것도 힘겹게 푸는 내가..... 울고 싶네.. 씁...
우선, 문제 정보를 확인해보면 flag.py에 파일이 있다고 한다.
웹사이트에 접속해보니 이렇게 핑을 보내는 화면이 보인다.
그냥 0.0.0.0을 보내보니....
이렇게 출력이 되었고, 이걸 보고 나 보안 응애짬밥 2개월... 여기에 flag.py를 cat명령어로 출력하는거군... 바로 알아버렸다....
그러면 이제 코드 분석을 해보자
우선 flask로 짜인 것 같고, 주의해서 봐야 할 곳은 ping 부분 try쪽이다. /bin/sh 로 명령어가 실행되고, 우리가 입력하는 host 부분에 명령어를 삽입하면, 수행될 것이다.
입력 조건 정규식으로 필터링되고 있으니 f12(개발자 도구)를 켜서 저 정규식을 지워주고, 입력값을 보내봤다.
하지만, 역시 에러가 떴고 아무래도 원인은 저 " 가 있어 문자열 취급으로 된 것이라 추측했다. 이 점을 유의해서 burp suite로 "의 형식을 맞추어 보내주었다.
0.0.0.0"; ls; echo "asdf <- 0.0.0.0 뒤에 ; 꼭 들어가야됨!!! 아니면 ;으로 끝맺음이 안되서 출력이 되지않는다.
이렇게 ls명령어로 디렉토리 내에 리스트들이 출력되었고, 같은 방식으로 0.0.0.0"; cat flag.py; echo "asdf 으로 보내주었다.
이렇게 flag를 찾을 수 있었다.
'보안' 카테고리의 다른 글
[DreamHack] Carve Party- 키보드 치는 농부 (0) | 2022.03.16 |
---|---|
[DreamHack] php-1 - 키보드 치는 농부 (0) | 2022.03.07 |
댓글