문제 설명을 보면 admin으로 로그인 해야 하는 것 같다.

또한 id와 ps는 char()자료형으로 32자를 고정 길이로 담을 수 있다.

문제 페이지를 보면 로그인과, 회원가입을 할 수 있는데 admin으로 로그인은 당연히 안된다.

id와 ps 변수를 보면 char 자료형으로 되어 있는데 char은 고정 길이 자료형이고, 현재 32자로 고정되어 있는데, 입력된 값 외에 남은 값들은 공백 문자로 인식하고, 32자를 넘어가는 문자를 입력하면 32자 까지만 인식된다.

ex) admin 입력시 : 'admin'의 5자를 제외한 나머지 27자는 공백 문자로 인식

 

회원가입 하는 곳에 가서 소스 코드를 보면 id 최대 길이가 32자로 되어 있는데 33자로 수정해 준다.

소스 코드를 수정한 후 id에 'admin + 공백 27자 + 1' 을 입력한다. 이렇게 되면 33번째 문자인 1은 인식되지 않는다.

ps에는 7자 이상의 값을 넣고 계정을 만들면 성공적으로 계정이 만들어 진다.

 

id:admin, ps:7자 이상 만든 값 으로 로그인 하면 admin으로 로그인 할 수 있고, flag를 얻을 수 있다.

 

알게 된 점 : char자료형은 고정길이 자료형이고, 남은 자리는 공백으로 인식, 고정길이 넘어가면 삭제

                varchar 자료형은 가변길이, 위 취약점을 막으려면 varchar 사용

'Security & Hacking > Wargame' 카테고리의 다른 글

[LoS] gremlin  (0) 2019.11.26
[Wargame.kr] type confusion  (0) 2019.09.10
[Wargame.kr] md5_compare  (0) 2019.09.03
[Wargame.kr] strcmp  (0) 2019.09.02
[Wargame.kr] DB is really GOOD  (0) 2019.09.02

+ Recent posts