SQL injection/lord of SQL

Lord Of SQL injection 15단계-assassin

ys.k 2022. 1. 10. 01:15

LOS 포스팅에 앞서 내용이 틀릴 수도 있으며, 해당 부분 지적은 감사히 받겠습니다.

15단계 소스코드이다.

이번엔 pw 뒤에 등호가 아닌 like 로 쿼리가 이루어져 있다.

id 가 admin인 pw값을 입력하면 문제가 해결된다.

하지만 like는 =와 달리 pw의 모든값을 입력할 필요가 없다.

LIKE 응용(대소문자 구분안함)

    1. a%       //a로 시작하는 문자열 검색                              ex) asd

    2. %a%     //a가 포함되어있는 문자열 검색                        ex) sad

    3. %a       //a로 끝나는 문자열 검색                                 ex) fgdfga

    4. a_        //a로 시작하며 _갯수만큼의 문자열 검색              ex) a4 

    5. a-c       //a와c 사이에 한글자가 들어가있는 문자열 검색    ex) agc

    6. ^a       //첫번째 글자가 a가 아닌 문자열 검색                 ex) bac

    7. []         //지정된 범위[a-f] , 집합[abc]에 있는 문자열 검색  ex) [j-l]orea

    8.[^]        //지정된 범위와 집합에 있지않은 문자열 검색       ex)[^a-c]name abc가 처음에 오지않는 ?name을 검색

 

    만약 특수문자가 있는지 찾고싶다면

    1. like %@___ ESCAPE '@' // 조건뒤에 escape '@' 를 추가해주면 조건에서 @뒤에오는 문자는 기능을 상실하고 문           자로 인식된다.  

 

admin 에만 해당하는 pw의 특징을 찾아 맞추어 넣어주기만 하면된다.

수동으로 찾은결과

0~9, a~z, A~Z 모두 입력 해봤지만 첫번째 값이 9일때만 Hello guest가 나왔다.

이를통해 유추할 수 있는 건 admin 과 guest의 비밀번호 첫자리가 9이며 guest가 우선순위임을 알 수 있다.

바로 인젝터를 만들어서 공격해보겠다. 기존 수동적인 방법을 더 자동화 시켰다.

생각보다 답이 금방나왔다.

guest 와 admin 의 비밀번호가 앞자리가 90으로 두번째 자리까지 같았지만 3번째 자리에서 차이를 보였다.

사실 이 방법은 정답일 때 사이트에서 어떤 문자열이 나오는지 안다는 전제가 있어야 가능한 공격이기에 실전에서는 어떻게 해야할지 더 생각해봐야겠다.

문제 해결!!!

 

느낀점

1. 처음에 ?% 다 대입해보았는데 guest 하나밖에 나오지 않아 당황하여 조금오래 방황했고, 원인을 빨리 추측해내지 못

2. 전보다 인젝터를 다루는데 능숙해진 것 같아 뿌듯하다.

3. 그리고 인젝터를 돌리다가 다시 웹페이지로 돌아왔는데 정답을 입력한적 없는 assassin이 풀려있어서 조금 당황했다.

   내가 작성한 코드가 실행되다가 정답인 값을 입력해서 일어난 결과 같은데 기억이 안난다... 조금더 봐야겠다.