-
|webhacking.kr| #9Wargame Site/Webhacking.kr 2019. 7. 5. 09:25
우선, 전체적인 구조를 파악하는 것이 우선이다.
no = 1 일 때
no = 2 일 때
no = 3 일 때
여기서 알 수 있는 점은 SQL injection 이 발생할 것 같은 느낌이 든다는 것이다.
no > 3 일 때
우선, no 에 걸려있는 filtering 목록을 뽑아내는 것이 우선일 것이다.
아주 간단하게 코드를 구성해보았다. ( + sleep 도 시도해봤습니다. )
그 결과 다음과 같은 문법이 필터되지 않는 것을 알 수 있었다.
if 를 통해서 접근하면 해결될 것 같은 느낌이 든다.
등호의 사용이 불가하기 때문에 like 로 대체해서 사용하면 될 것 같다.
no=1 일 때의 id 값이 Apple 인 듯 하다. (만약 궁금하다면 이에 맞는 쿼리를 만들어서 날려보면 알 수 있다.)
no 이 3 이었을 때의 id 가 패스워드인 듯 하다.
SQL injection 관련 게시글을 참고하면 쉽게 쿼리를 만들 수 있다.
like 를 사용할 때 주의할 점은 '%', '_' 이 두 가지 문자의 사용이다. ( 각각 ascii value = 37, 95 )
like 에서 특별한 역할을 하기 때문에 이 두 문자가 나올경우에는 continue 를 해주는 작업이 필요하다.
그리고 띄어쓰기 및 띄어쓰기를 대체할 수 있는 표현의 사용이 불가하기 때문에 괄호를 통해서 구분지어주는 기법을 사용하면 된다.
그리하여 no 가 3 일 때의 id 를 구할 수 있다.
명심해야할 것은 위의 값이 소문자인지 대문자 값인지 모른다는 것이다.
앞서 Los 26. Red_Dragon 의 문제 풀이에서 다뤘던 내용이다.
Clear ~
'Wargame Site > Webhacking.kr' 카테고리의 다른 글
|webhacking.kr| #11 (0) 2019.07.05 |webhacking.kr| #10 (0) 2019.07.05 |webhacking.kr| #8 (0) 2019.07.03 |webhacking.kr| #7 (0) 2019.07.02 |webhacking.kr| #6 (0) 2019.07.02 댓글