본문 바로가기

suninatas.com

suninatas(써니나타스) 6번 문제 풀이

안녕하세요. 정보보안 등대지기입니다.

 

오늘은 6번 문제를 풀어보도록 하겠습니다.

 

 

※ 정답만 보지 마시고 실습을 통해 문제를 직접 풀어보시는 것을 추천드립니다.

 

6번을 클릭하면 문제 페이지가 등장합니다.

6번 문제 화면

 

 

게시판이 보이네요.

각 게시글을 클릭해봅니다.

1번 게시글

1번 게시글에는 suninatas의 글을 읽으라는 내용이 적혀있습니다.

 

 

2번 게시글

2번 게시글에는 md5해싱 사이트의 URL 경로가 적혀있습니다.

 

 

패스워드 입력창

3번 게시글에는 패스워드를 입력하는 창이 등장합니다.

 

 

4번 게시글

4번 게시글에는 특별한 내용은 없어 보입니다.

 

 

5번 게시글

5번 게시글 역시 특별한 내용은 없어 보입니다.

 

 

모든 게시글을 살펴본 결과

먼저 3번 게시글에 있는 패스워드 입력하여 해결해야 할 것 같습니다.

 

패스워드 입력 폼 아래에 SQL 쿼리문을 먼저 해석해보면

T_Web13이라는 테이블에서 nIdx값이 3인 라인의 szPwd라는 칼럼을 참조한다는 쿼리문이고,

위 쿼리문을 보여준 것으로 보아 SQL 공격을 통해 패스워드 인증을 우회해야 한다는 추측을 해볼 수 있습니다.

 

기본적인 SQL Injection 공격 구문으로 '1 or '1'='1' -- 구문을 삽입한 결과 "NO! Hacking!"이라는 메시지와 등장하며 리다이렉트 되는 것을 확인하였습니다.

SQL Injection 공격 실패 메시지

 

 

여기서 또 다른 힌트를 얻을 수 있는데 "NO! Hacking!"이라는 메시지가 등장하면 구문 중 특정 문자열이 필터링되는 것을 유추하여 필터링되지 않은 문자열 또는 특수문자를 찾을 수 있습니다.

 

이를 이용하여 다양한 SQL Injection 공격을 시도해본 결과,

필터링된 문자열 : '(', ')', 'and', 'select', 'union', 'having', 'group', 'by', 'from', '='

필터링되지 않은 문자열 : 'or', 'like', '<', '>', '"', '-'

들을 알아낼 수 있었습니다.

 

필터링되지 않는 문자열을 가지고 우회한 SQL Injection 공격 구문은

 

1'or'1'like'1' -- 1' or '2' > '1' --입니다.

위 구문을 입력하면 아래와 같은 메시지가 등장합니다.

SQL Injection 공격 성공 메시지

 

auth_key는 "suninatastopofworld!"라는 것을 확인하였습니다.

 

확인을 누르니 패스워드 입력창이 사라지고 "KeyFinding^^"라는 문구의 3번 게시글이 등장합니다.

3번 게시글

 

이 auth_key를 통해 suninatas 홈페이지에서 Auth인증을 시도했지만 값이 틀렸다는 메시지가 등장합니다.

인증 실패

 

 

또 다른 힌트가 있지 않을까 싶어서 3번 게시글의 페이지 소스를 보았더니 Key 값의 힌트가 주어졌습니다.

힌트

 

 

해당 힌트를 살펴보면 로마의 첫 번째 왕이 누구인지를 묻습니다.

구글 검색을 통해 Auth인증을 하여 문제를 해결하였습니다.

 

6번 문제 풀이는 여기서 마치겠습니다.

보안에 관심 있는 분들이 손쉽게 이해하고 접근할 수 있도록 노력하겠습니다 :)

 

질문 또는 조언해주실 분은 아래 댓글 또는 메일로 남겨주세요.

 

cjh1503123@naver.com