ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • |Lord of SQL_injection| #24 Evil_wizard
    Wargame Site/SQL injection 2019. 2. 27. 15:50



    9 개의 문제만을 남겨두고 있는 상황이다 얼른 달려야겠다.   



    화이팅













     24단계 문제 Evil_wizard 이다. 


    중간에 노란색으로 주석처리가 된 부분이 눈에 뛴다.

    hell_fire 랑 같을거 같지?

    이 문구를 보고 '이번엔 필드에 따라 정렬을 해도 차이가 없겠구나' 라는 생각을 했다.















    역시나 어떤 필드를 사용하든 간에 admin 이 위로 올라와 있는 것을 볼 수 있었다.


    order 를 적절히 조절해서 다른 결과를 보여줄 수 있는 구문을 찾는다면 끝날 것 같다.





    다음과 같은 경우를 발견했고, 바로 코딩에 돌입했다.


    order by [정수] 의 경우는 "정수 번째 필드에 따라 정렬해라" 라는 의미로


    order by 1 은 order by id 와 같은 구문이다.









    일단 코딩을 해보았다.





















    짜잔!!









    이 방법으로 문제를 해결하긴 했으나, 뭔가 찜찜한 구석이 있었다.


    바로 order by '' 에 대한 부분인데, 이것이 어떠한 역할을 하는지에 대한 부분을 찾기위해 이곳 저곳을 다녀봐도,


    해당 문법에 대한 내용을 찾을 수 없었다. 그리고 order by 0 을 했을 경우 출력이 안되었다는 점도 의문이었다.



    현재 facebook 생활코딩란에 질의한 상태이고, 질의를 받고 이해하게 되면 덧붙여서 포스팅을 해야겠다.




    하지만, 문제의 맹점은 여전히 입력에 따른 화면의 변화에 있었고, 그 점을 적절히 활용한 것 같아 뿌듯했다.











    KMC 님의 답변이 큰 도움이 되었습니다.




    우선 order by 라는 친구는 정렬에 관련이 되어있다. 

    select 를 한 결과를 정렬해주는 구문이기 때문에 출력 순서와는 관련이 있기만,

     select 된 데이터 자체에 접근할 수 없다는 점에 주목하면 된다.


    그래서 order by 0 를 하였을 때, 아무 열도 출력되지 않는 것은 오류로 보인다.


    order by [ 필드 ] 에서 필드 값에 존재하지 않는 값 ('', 5, 'id' 등) 을 넣었을 시에 존재하지 않는 필드값이라 할지라도 select 에 영향을 주지 않으므로 그 순서는 기존의 순서와 같을수도, 다를수도 있다. 


    이 문제에서는 달랐다는 점을 이용한 것이고, 그를 이용해서 해결한 것이다.




    order by 0 을 했을 때 존재하지 않던 칼럼들이 order by log(0) 을 했을 때 존재할 수 없기 때문에 오류라고 확신하고 있다.


    뭔가 워게임 사이트의 문제점을 찾아봤다는 점에서 되게 뿌듯했다.
















    댓글

Designed by Tistory.