해당 문제와 같은 경우 소스코드를 제공해 주고 있어서 다운받아 분석을 해봤다.


전체적인 흐름은 간단한 PHP MVC 형태의 웹 어플리케이션인데 일단 코드상에서 취약점이 터질만 한건  SQLI랑 LFI 두개 정도였다. 둘 다 해당 취약점들에 대해 필터링하는 코드들이 존재하고 있었고 SQLI는 아무리봐도 트릭류로 우회가 가능할 것 같은게 보이지가 않아서 일단 접어놓고 LFI쪽으로 계속 분석을 해봤다.


일단 필터코드는 아래와 같은 형태로 함수가 존재했다.



일단 상위경로같은 경우는 단순 치환이라 ....//같은 형태로 우회가 가능했고  NULL값을 치환하고 맨뒤 4글자가 html인지 확인하는건 로그인 시 세션 고정상태라 내가 요청한 값으로 세션이 세팅되서 세션파일로 우회하면 되겠다고 생각했다.


여기까지 생각하고 MVC형태에 맞춰서 아래와 같이 공격을 진행했다.


먼저 로그인 시 요청세션을 123html 요런식으로 보낸다음 아래와 같은 형태로 요청을 했다.


http://dm1536803965686.fun25.co.kr:23907/....//....//....//....//....//....//....//var/lib/php/sessions/sess_123html


요렇게 보내면 MVC 형태에 맞춰서 http://dm1536803965686.fun25.co.kr:23907/index.php?p=....//....//....//....//....//....//....//var/lib/php/sessions/sess_123html 요렇게 자동으로 rewrite처리되서 lfi가 터질거라고 생각했는데 잘 안됬다. 그래서 한참 고민하다가 아예 그냥 아래처럼 직접 index.php에 요청을 해봤더니 정상적으로 session파일이 include되는걸 볼 수 있었다.



이제 그냥 RCE하면 되겠다고 생각했는데 로그인할때 계정명에 공백이랑 _가 필터되고 있어서 아래와 같은 형태로 PHP Jail류 풀때 쓰던걸 떠올려서 로그인 계정 만들고 현재 디렉토리 내 파일을 봤더니 플래그가 있었다.

















'CTF > Writeup' 카테고리의 다른 글

Codegate 2018 CTF RedVelvet  (0) 2018.09.18
BugsBunny CTF 2017 Rev150  (0) 2018.09.17
LAYER7 CTF 2018 url routing  (0) 2018.09.17
Meepwn CTF Quals 2018 OmegaSector  (0) 2018.07.17
Meepwn CTF Quals 2018 Ezchallz  (0) 2018.07.16
블로그 이미지

JeonYoungSin

메모 기록용 공간

,