외로운 Nova의 작업실

dreamhack - [wargame.kr] tmitter 문제 풀이 본문

Web Penetesting/Web Vulnerability

dreamhack - [wargame.kr] tmitter 문제 풀이

Nova_ 2023. 6. 6. 14:29

- 문제 인식

 

따로 코드는 없습니다. 그럼 접속해보겠습니다.

 

</ 페이지>

 

</join.php : sign up 페이지>

 

<sign in 페이지>

 

- 문제 설계

먼저 간단한 sql injection으로 로그인을 하면 통하지않습니다. 모든 특수문자들을 escape 처리하는 것으로 보입니다. 회원가입 폼에서도 통하지 않습니다. 또한, id는 admin으로 회원가입을 하면 admin이 존재한다고합니다. 이는 서버상에서 id부분을 admin인지아닌지 검증하는 코드가 있다고 추측할 수 있습니다. 이문제는 sql injection 문제가 아닙니다. 이 문제의 취약점은 바로 mysql의 CHAR 자료형에 있습니다.

 

CHAR 자료형은 고정된 길이 문자열을 저장하는데 사용하는 자료형입니다. 따라서 문제에서 32바이트를 할당했는데, 그보다 짧으면 공백을 채워넣고 그보다 길면 32바이트만 잘라서 사용하게됩니다. 이를 이용해서 id에는 admin + 공백27개 + 1234를 넣게되면, admin 검증 코드에서 통과하고 mysql에서는 admin+공백27개가 저장되어 결국 admin으로 인식하게됩니다. 이러한 취약점을 이용해야합니다.

 

- 문제 풀이

id에 admin+공백 27개 + 1234를 넣어줍니다. 비밀번호는 하고싶은거로 합니다. 로그인을 하게되면 아래 처럼 flag값이 나옵니다.

 

Comments