티스토리 뷰

hacking/LOS

<LOS> - 11번(golem)

khe0616 2018. 4. 9. 21:32








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
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함