tmitter이라는 홈페이지가 나옵니다.

계정을 로그인 할 수 있는 버튼과 새로 가입할 수 있는 버튼이 하나씩 있습니다.



계정을 모르기 때문에 해당 페이지로 가보면 ID/PS 입력란이 있고 아무것도 알려주지 않습니다.

소스를 확인 하면 주석으로 admin으로 가입하라는 힌트가 하나 주어집니다.



기본적으로 admin으로 가입을 시도하면 다음과 같이 존재한다면서 아이디가 생성되지 않습니다.



SQL Injection으로 해보면 되지 않을까 생각에 다음과 같이 시도해도 싱글쿼터(') 앞에 \가 붙으면서 제 역할을 하지 못합니다.

아마 addslashes() 나 get_magic_quotes_gpc()가 사용되고 있는 것으로 생각됩니다.

(insert into table_name value('$id','$pw')이런 식으로 join하겠죠?)



하지만 멀티바이트를 사용하는 언어셋 환경이라면 싱글쿼터를 우회 할 수 있습니다.

%a1~%fe 중 하나를 싱글쿼터 앞에 붙여서 보내면 싱글쿼터와 합쳐져 하나의 문자로 인식되기 때문에 우회가 가능합니다.


그래서 burp suite로 중간에 해당 값을 바꿔서 보내면 가입이 완료됩니다.




근데 생각해보니 싱글쿼터가 하나가 남게 되는데 query error가 아닌가 보네요...?

#을 지우고 해도 join이 되었습니다...??? (알 수 없네요..)



원래 의도 풀이


다른 블로그를 확인해보니 DB의 문제를 이용한 풀이를 했었습니다.


사실 처음 화면에 왜 create 문을 보여주었는지 의아해 했는데...

id가 32글자라는 것이 중요한 힌트였습니다.


서버에서 처리할 때 trim을 이용해 앞뒤 공백을 지우게 되는데 이것을 이용해서

"admin                           1" 이런 식으로 1을 제외한 앞 부분까지 32글자를 공백으로 만들어 보내면

32글자까지만 인식하기에 admin으로 가입이 되는 문제였습니다.

'WarGame > wargame.kr' 카테고리의 다른 글

[WarGame] WTF_CODE  (0) 2018.11.05
[WarGame] php? c?  (0) 2018.11.02
[WarGame] img recovery  (0) 2018.10.31
[WarGame] pyc decomplie  (0) 2018.10.30
[WarGame] md5_compare  (0) 2018.10.30

+ Recent posts