1

로그인 우회 3번째문제

로그인 우회 3번째문제

노아의 블로그

    목차
반응형

문제의 목표는 주어진 계정으로 로그인 하는것.

 

일단 SQL Injection 공격이 되는지 확인하기위하여 간단한 ' , # 같은것을 보내보았다. 오류가 나지 않고 단순히 실패라고 뜨는것을 보아 예외처리가 다 되어있는듯 하였다.

 

그러므로 오류 메시지는 볼 수 없다고 판단하였다. 

 

이제 injection 공격 확인용 mario' and '1' = '1 과 정상적인 비밀번호를 입력했다.

 

정상적으로 작동되는것을 확인할 수 있고 Injection 공격이 통하는것을 볼 수 있다.

 

select  ? from member
where id = 'mario' and 1 = 1 #'
and password = ?

 

password에도 위와 같은 코드를 보내보았다.

하지만 위와 다르게 작동이 안된다. 이를 통해서 인증과 식별을 따로 처리하는 로직이라고 생각하였다.

select ?,password from member
where id = 'mario' and 1 = 1 #'

 

인증과 식별을 따로 처리하는 로직이라면 결과를 조작해서 

주어진 계정으로 로그인을 해버리면 되는것이다.

 

하지만 union을 하기전에 우리는 컬럼의 수를 알아야한다.

 

그래서 id란에 mario' order by 1 #~ 안될때까지 했다.

만약 인증과 식별을 동시에 한다면 이 코드가 실행되지 않았겠지만 

이 사이트는 아까 가정한대로 인증과 식별을 동시에 진행하지 않아서 id란에서 order by가 가능하다.

 

결과적으로 order by 2까지 되었고 2개의 컬럼이 존재한다는것을 알아냈다.

 

이제 union injection 공격을 해서

select ?,? from member
where id = 'x' union select 1,'2';

 

를 했더니 패스워드를 2로 해서 로그인이 되었다.

이제 주어진 아이디를 넣으면 해결!

 

 

 

 

반응형

'해킹 > SQL Injection' 카테고리의 다른 글

SQL Injection - Blind SQLi  (0) 2023.04.28
데이터 추출 두번째 문제  (0) 2023.04.23
SQL Injection - Error Based SQLi  (0) 2023.04.23