티스토리 뷰

hacking/LOS

<LOS> - 12번(darkknight)

khe0616 2018. 4. 9. 22:19






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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함