[wargame.kr]tmitter 문제
SQL Injection
방법 1.
- insert 문을 예측하여 admin 계정의 비밀번호를 얻어 주었다.
- union sql injection
test','1'),('key','name',(select ps from tmitter_user where id='admin'),'3')#
방법 2.
- 아이디 검사 시스템의 허점을 이용하여 방법이다.
- 서버에서 아이디의 최대 길이를 검사하지 않아 발생한 문제이다.
- 로그인 방식을 예측하기.
select * from tmitter_user where id=아이디 and pw=비밀번호
-
아이디 크기가 char(32) 이다. 따라서 회원 가입을 할 때 서버에서 아이디 길이를 따로 검사하지 않는다 따라서 아이디가 저장될 때 32 바이트 만을 저장한다. 그리고 mysql 에서 데이터를 저장할 때 공백을 생략하는 것 같다.
-
회원가입
id=admin++++++++++++++++++++++++++++++++++++1&pw=1234567
- 두 개의 admin 계정이 생성되었다.
- 원래 admin 계정과 현재 만든 admin 계정 두 개가 생성되어있다.
- 후에 만든 admin 계정으로 로그인을 하면 원래 admin 계정으로 로그인 되는 것을 확인할 수 있다. 왜냐하면 db에 먼저 저장된 admin 이라는 id의 정보를 읽어오기 때문이다.
댓글남기기