티스토리 뷰
or, and, substr(, = 에 필터링이 걸려있다.
이 필터링을 우회하여 id='admin'인 계정의 password를 알아낸 뒤, 이 pw를 입력해주어야 해결되는 문제이다.
일단 패스워드의 길이를 알아내야 한다.
or에 필터링이 걸려있으므로 or대신 ||
and에 필터링이 걸려있으므로 and대신 %26%26 (&&으로 입력하면 인식이 안됨)
=에 필터링이 걸려있으므로 = 대신 like를 이용하였다.
like와 이용되는 '_' (한 글자와 매칭) , '%' (여러 문자[0개 이상]와 매칭) 중 %를 이용하였다.
?pw='||id like 'admin' %26%26 length(pw) like '8%'%23
위와 같이 입력했을때, Hello admin이 출력되는 것으로 보아, id='admin'인 계정의 패스워드의 길이가 8이라는 것을 알 수 있다.
이제 패스워드의 각 자리 값을 알아내야 한다.
substr() 함수에는 필터링이 걸려있으므로, like와 %를 잘 이용하면 우회할 수 있다.
?pw='||id like 'admin' %26%26 pw like '8%'%23
위와 같이 입력했을때 Hello admin이라고 출력되는 것으로 보아, id='admin'인 계정의 패스워드의 첫번째 자리가 8이라는 것을 알 수 있다.
위에서 입력했던 코드를 이용해서 파이썬으로 프로그램을 작성한 뒤, 실행한 결과이다. 패스워드의 길이와, 패스워드를 알아냈다.
코드는 검색해서 잘 작성해보길 바란다.
?pw=88e3137f
파이썬 프로그램으로 알아낸 패스워를 위와 같이 입력하면 클리어
'hacking > LOS' 카테고리의 다른 글
<LOS> - 13번(bugbear) (0) | 2018.04.29 |
---|---|
<LOS> - 12번(darkknight) (0) | 2018.04.09 |
<LOS> - 10번(skeleton) (0) | 2018.04.09 |
<LOS> - 9번(vampire) (0) | 2018.04.09 |
<LOS> - 8번(troll) (0) | 2018.04.06 |