ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • |Lord of SQL_injection| #4 Orc
    Wargame Site/SQL injection 2019. 2. 7. 18:57





    네번째 친구를 만나보자 ~~



     4단계 문제 orc 이다. 차근차근 해석해보니까 admin 의 패스워드를 맞춰야만 해결할 수 있을 것 같다. 

    우선 쿼리문을 다음과 같이 참으로 만들어 보자.



    select id from pob_orc where id = 'admin' and pw='' or '1'


    다음과 같은 쿼리문이 있을 때 조건문에서 연산자의 우선순위는 or 보다 and 가 높다.

    따라서, 아이디가 admin 이고 패스워드가 '' 이거나 '1'(항상참)로 해석하면된다.

    나중에 and, or 가 뒤죽박죽 되어있는 문제가 나왔을 때 당황하지 말도록하자~




    다음의 화면처럼 query 문의 내용이 참일 경우 'Hello admin' 이 출력된다. 사용자가 입력한 내용에 따라 출력되는 화면이 바뀐다면 이는 Blind Injection 에 취약하다고 볼 수 있다. (blind injection)

    (Webhacking 2번 문제도 이를 이용해서 풀 수 있다.)


     패스워드의 길이를 알아내는데 필요한 함수 length([인자]) 와 패스워드를 한 글자씩 가져와 비교하기 위한 함수인 substr([인자], [인덱스], [길이]) 를 사용했다. 이를 이용해서 admin 의 pw 를 알아낸 뒤, 파라미터로 넘겨줄 경우 문제가 해결된다.


     function

    return value 

     length('abcdefg')

     substr('abcdefg',1,1)

    'a' 



    select id from pob_orc where id = 'admin' and pw='' or id = 'admin' and length(pw) > 0 

    select id from pob_orc where id = 'admin' and pw='' or id = 'admin' and substr(pw, 1, 1) = 'a'

    와 같이 쿼리문을 작성해서 넘겼을 때, 해당 쿼리문의 결과가 있다면 Hello admin 이라는 문구가 보일 것이다. 하지만, 이것을 파라미터로 일일히 넘기기에는 답답한 일이기 때문에 간단히 코드를 작성해보았다.







    Python 을 이용해서 Blind Injection Code를 만들어 보았다.




    개인적으로 requests 를 설치하여 코딩하는 것이 간결하다는 느낌을 받았다.


    우선 requests 를 설치한 뒤 다음과 같은 코드로 pw를 알아냈다.





    Blind injection 을 Python 코드로 실행해야할 때 자주 애용하게될 코드이다. ㅎㅎ

    url 에 해당 url 을 입력해주고, headers 에는 헤더에 들어갈 내용을 넣어주면 된다.

    다른 요구사항이 없을 때 쿠키값을 넣어주면 된다~~ 

    (webhacking.kr 문제에는 이 header 를 추가해야 풀 수 있는 문제가 있다.)




    위의 코드 이외에도 ord, hex, chr, str 등의 형변환을 통해 자유롭게 코딩이 가능하다 ~~ !!

    또한 string = 'abcdefg...' 처럼 패스워드가 될 수 있는 문자들을 설정하여 for 문을 돌릴 수 있다. 

    (속도는 좀 더 빠르겠죠오??)






    짜잔!!




    이리하여 pw 를 파라미터를 통해 넘겨주면 끝!!





    코드를 직접짜서 풀어야하기 때문에 난이도가 조금씩 올라가는 것을 느낀다.


    화이팅~   






    'Wargame Site > SQL injection' 카테고리의 다른 글

    |Lord of SQL_injection| #6 Darkelf  (0) 2019.02.08
    |Lord of SQL_injection| #5 Wolfman  (0) 2019.02.08
    |Lord of SQL_injection| #3 Goblin  (0) 2019.02.07
    |Lord of SQL_injection| #2 Cobolt  (0) 2019.02.06
    |Lord of SQL_injection| #1 Gremlin  (0) 2019.02.06

    댓글

Designed by Tistory.