반응형
[los - SQL injection] nightmare ( 18단계 )
- pw=(' ')=0
- 주석문자 대체: #, - -> ;%00
! mysql에서 '1234'=1234 같은걸로 처리한다.
[ 풀이과정 ]
nightmare는 if($result['id']) 조건이 만족되면 문제가 풀리게 된다.
여기서는 pw에 들어가는 입력값이 prob _ . ( ) # - 문자가 preg_match() 함수로 인해서 필터링이 된다.
그리고 pw의 길이는 6을 넘으면 안되는 제약 또한 있다...
그렇다면 6개의 문자만을 이용해서 이 문제를 풀어내야한다.
SQL에서는 pw=('')=0과 같은 쿼리를 허용해준다.
이 특성을 잘 이용해보면 문제가 풀리는 방법이 보인다.
주석 문자가 막힌 부분은 ;%00으로 해결을 할수가 있다.
select id from prob_nightmare where pw=('') and id!='admin'의 쿼리에
select id from prob_nightmare where pw=('')=0;%00') and id!='admin'과 같이 추가시켜준다.
이렇게 되면 뒤쪽 쿼리 또한 없는 쿼리가 되어버리기 때문에 pw에 대한 결과가 참이므로
이 식은 성립이 된다.
18단계 클리어~~~
반응형
'워게임 > LOS' 카테고리의 다른 글
[los - SQL injection] dragon ( 20단계 ) (0) | 2017.09.24 |
---|---|
[los - SQL injection] xavis ( 19단계 ) (0) | 2017.09.24 |
[los - SQL injection] succubus ( 17단계 ) (0) | 2017.09.24 |
[los - SQL injection] zombie_assasin ( 16단계 ) (0) | 2017.09.24 |
[los - SQL injection] assasin ( 15단계 ) (0) | 2017.09.24 |
댓글