티스토리 뷰
GET으로 pw와 no를 전송할 수 있다.
pw에는 ' 에 대한 필터링이,
no에는 prob, '_', '.', '()', ', substr, ascii, = 에대해 필터링이 걸려있다.
이 필터링을 우회하여 id='admin'인 계정의 패스워드를 알아낸 뒤 입력해주어야 하는 문제이다.
먼저 패스워드의 길이를 알아내자.
query에서 맨뒤에 있는 no를 이용하였다.
'에 필터링이 걸려있으므로 ' 대신 "(double quote)
=에 필터링이 걸려있으므로 =대신 like (%와 함께 사용)
를 이용하였다.
?no=3 or id like "admin%" and length(pw) like "8%"
위와 같이 입력하였을때, Hello admin이 출력되었다.
따라서 id='admin'인 계정의 패스워드의 길이는 8임을 알 수 있다.
이제 패스워드의 각 자리가 무엇인지 알아내야 한다.
substr()함수에 대해 필터링이 걸려있기 때문에, like와 %를 잘 이용하면 된다.
?no=3 or id like "admin%" and pw like "1%"
위와 같이 입력하였을때, Hello admin이 출력되었다.
따라서 id='admin'인 계정의 패스워드의 첫번째 자리는 1임을 알 수 있다.
위의 코드들을 이용해서 파이썬으로 프로그램을 작성한 뒤, 실행한 결과이다.
패스워드의 길이와 패스워드를 출력하는 프로그램이다.
검색해서 잘 작성해보길 바란다.
?pw=1c62ba6f
획득한 암호를 위와 같이 입력하면 빨간색 화살표로 가리키는 코드에 의해 클리어 된다.
'hacking > LOS' 카테고리의 다른 글
<LOS> - 14번(giant) (0) | 2018.04.29 |
---|---|
<LOS> - 13번(bugbear) (0) | 2018.04.29 |
<LOS> - 11번(golem) (0) | 2018.04.09 |
<LOS> - 10번(skeleton) (0) | 2018.04.09 |
<LOS> - 9번(vampire) (0) | 2018.04.09 |