-
|Lord of SQL_injection| #24 Evil_wizardWargame 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) 을 했을 때 존재할 수 없기 때문에 오류라고 확신하고 있다.
뭔가 워게임 사이트의 문제점을 찾아봤다는 점에서 되게 뿌듯했다.
'Wargame Site > SQL injection' 카테고리의 다른 글
|Lord of SQL_injection| #26 Red_dragon (0) 2019.03.02 |Lord of SQL_injection| #25 Green_dragon (0) 2019.03.01 |Lord of SQL_injection| #23 Hell_fire (0) 2019.02.23 |Lord of SQL_injection| #22 Dark_eyes (0) 2019.02.23 |Lord of SQL_injection| #21 Iron_golem (0) 2019.02.22 댓글