안녕하세요 오늘은 webhacking.kr 18번 문제를 풀어보도록 하겠습니다.
이번 문제는 약간 풀 때 이상했던 점이 있는 문제였습니다.
일단 아래는 소스코드입니다.
sql injection을 통해 query의 반환 값이 admin이면 @solve()를 줍니다.
제가 생각 했던 query는
id='guest' and no=-1 or id="admin"
입니다. 근데 이상하게 이 반환값을 admin으로 안주더라고요
흠.. 왜 그런지는 잘 모르겠습니다만.
문제 풀이 방법은 no를 이용하여 푸는 문제입니다.
no=1일 때는 guest를 출력 해주는데
no에 2를 넣으면 solve를 줍니다.
필터
공백 필터 우회 %0a
query문 해석
id='guest' and no=-1 or no=2
위의 쿼리를 해석하면
(id가 guest이고(and)no=-1)이거나 no가 2인 값
이라고 해석 할 수 있습니다.
guest의 no는 1이기 때문에 id='guest' and no=-1은 거짓이 됩니다.
그러므로 no=2인 값이 반환값으로 돌아오게 되는 것 입니다.
'Study > webhacking.kr' 카테고리의 다른 글
webhacking.kr 23번 문제 (0) | 2017.06.13 |
---|---|
webhacking.kr 21번 문제 (0) | 2017.06.13 |
webhacking.kr 17번 문제 풀이 (0) | 2017.06.13 |
webhacking.kr 16번 문제 (0) | 2017.06.13 |
webhacking.kr 15번 문제 (0) | 2017.06.13 |
댓글