문제에 들어가보면 다음과 같은 페이지 하나만 떡하니 존재한다. 출력된 문구를 읽어보면 base64로 인코딩된 json객체 파라미터로 뉴스를 얻어온다 뭐 대충 이런뜻인것 같았다.
일단 object라는 파라미터가 존재하나 확인해보니 에러가 터지는걸 통해 실제로 존재하는걸 볼 수 있었다.
위의 문구에서 나온대로 해당 파라미터에 {"ssr":"ssr"}과 같이 json형태의 데이터를 base64인코딩해서 요청해 보니 다음과 같은 에러가 터지는걸 통해 data라는 키값이 존재하는걸 알 수 있었다.
위에서 알아낸 data키값에 {"data":"ssr"}를 넣고 날려보니 다음과 같이 data키의 값을 통해 디비에서 뉴스를 조회해서 뿌려주는 형태인걸 알 수 있었다.
여기서 인젝션터트리면 되겠다하고 {"data","' or 1=1-- x'} 이런식으로된 데이터를 base64인코딩해서 보내니 WAF에 걸렸다는 메시지가 나오는걸 볼 수 있었다.
문제이름도 Good WAF였던걸 보아 WAF만 우회해서 데이터 뽑아내면 될거라 생각하고 우회시도를 해봤는데 base64인코딩전 json 형태의 data키의 값 영역에서는 뭔짓을해도 우회가 힘들어보였다. 여기서 데이터를 굳이 Base64인코딩해서 넘기는 이유가 뭘까 생각하다가 base64인코딩전의 원본 데이터가 아닌 base64된 데이터자체를 waf에서 bypass할 수 있는 방법이 있나하고 이것저것 찾아보다 요런 트릭을 발견했다.
가능하다만 나와있고 정확히 어떠한 원리인지는 찾지 못했는데 이건 추후에 조금더 연구를 해봐야할 것 같다. 어쨋든 이 트릭을 써서 {"data":"' or 1=1-- x"} 요런식으로된 데이터를 날려보니 WAF 필터에 안걸리고 SQLi가 터지는걸 볼 수 있었다.
여기서부터는 SQLI로 데이터를 쭉쭉 뽑아줬다.
Table명
{"data","23423423' union select 'a',group_concat(table_name) from information_schema.tables where table_schema=database()-- x"} -> access_logs,credentials,news
credentials 테이블 칼럼명
{"data","23423423' union select 'a',group_concat(column_name) from information_schema.columns where table_name='credentials'-- x"} -> id,username,password,role
credentials 테이블 데이터
username = valid_user , password = 5f4dcc3b5aa765d61d8327deb882cf99
여기까지 뽑고 md5 해쉬값을 크랙해보니 password라는 평문값이 나왔다. 이제 이걸로 뭔가 로그인관련 행위를 하면 될 것 같았고 숨겨진 로그인페이지가 존재하는지 살펴봤다. 게싱해야되나 생각했다가 위에서 뽑은 테이블명중에 log테이블이 존재하길래 쭉 데이터를 보다보니 디비에 아래와 같은 로그데이터가 저장되어있었다.
?action=log-in이라는 url이 요청된걸 볼 수 있었고 그대로 요청해보니 다음과 같은 에러가 나타났다.
여기서 삽질을 좀 했는데 분명 아이디랑 패스워드 정보나 그외의 어떠한 유효한 데이터가 제대로 요청이 안된 것 같아서 요청 파라미터를 추측해서 id,user,password등 이것저것 넣어봤는데 안되서 아예 잘못생각하고 있나하다가 혹시하고 에러메시지에 포함된 credentials이라는 파라미터를 날려보니 아래와 같이 에러 메시지가 변경한걸 볼 수 있었다.
위의 에러메시지로 구글링좀 해보니 주로 Array데이터를 php에서 처리할때 발생하는 에러메시지 같았고 아래와 같이 요청해보니 에러메시지가 사라졌고 여기다 아이디,패스워드 넣어보내면 되겠구나 하고 생각해 실제로 넣어보니 플래그가 나왔다.
'CTF > Writeup' 카테고리의 다른 글
Meepwn CTF Quals 2018 OmegaSector (0) | 2018.07.17 |
---|---|
Meepwn CTF Quals 2018 Ezchallz (0) | 2018.07.16 |
ASIS 2018 CTF Buy flags (0) | 2018.05.01 |
HITB-XCTF 2018 upload (0) | 2018.04.14 |
Byte Bandits CTF R3M3MB3R (0) | 2018.04.08 |