admin 으로로그인 해야되는게 목표다.
회원가입창이 있으니까 일단 간단하게 가입해서 로그인 해보자.
hi! starson1
your password hash : bf69a4c3b0da457bf159b60ca2ff230a
이렇게 로그인 해쉬를 준다. 실제로 비밀번호를 해쉬해서 보관하나 보다.
decode 해보자.
md5 로 해쉬되어있으면서 뒤에 apple이라는 값이 별도로 붙는다 (salt)인듯.
컬럼 이름은 id pw 로 주어진 상황이다.
즉 이렇게 생겼겠지.
id |
pw |
guest |
~~ |
admin |
~~~ |
starson1 |
hash('2019330012+apple') |
로그인 창 자차에서 인젝션을 시도하기는 힘들듯 하다.ㅠㅠ 해쉬되버려서,
join 에서 admin 값으로 아이디를 만들수 있다면 할수 있을 것이다.
id : admin' or 1=1%23
pw : 11111
으로 만들어보니 이전과는 다른 결과가 나왔다.
"no admin"
admin 이라는 단어에 필터링이 걸려있는거 같으니 우회해서 넣어보자
admin = 61646d696e
id : 'or admin=0x61646d696e
pw : 1
query 에 admin이 있어서인지 필터링 되는것 같다.
일단 내 아이디로 테스트를 해보자.
id : 'or 1=1#
pw : 2019330012
-> Wrong password!
id : 'or 1=2#
pw : 2019330012
-> login fail
일단 post 방식으로 갈때 uuid=starson1&pw=2019330012 이런 형식으로 주어진다는거 알아놓자
이렇게 참 거짓을 판단할 수 있도록 만들어놓은것을 봐서 blind sql injection 이다.
비밀번호를 좀 단순하게 해야겠다.
id: test pw : a
id_query : 'or id='admin' and ascii(substr(pw,1,1))=__
근데 해쉬함수라 pw 길이가 32 로 정해져 있다. 즉 ascii랑 substr 만 이용해서 값만 구해주면 된다.
코드를 짜서 보자
uuid=admin' and ascii(substr(pw,1,1))>0 #&pw=a
이면 참이 나온다.
연습용 아이디에서는
starson1' and ascii(substr(pw,1,1))= 98# 를 넣을때 참이 나왔다.
쭉 찾아보자
admin hash is : 6c9ca386a903921d7fa230ffa0ffc153
이거를 디코딩 해주고, salt 인 apple 을 빼주면 답이되겠다.
즉 답이 wow 겠다.(apple 은 salt)
평 : salt 가 붙어있는 hash 인지 + blind sql injection 할수 있는 true false 찾기.
'WriteUp > Webhacking.kr' 카테고리의 다른 글
webhacking.kr : challenge 24 (0) | 2020.09.11 |
---|---|
webhacking.kr : challenge 23 (0) | 2020.09.11 |
webhacking.kr : challenge 21 (0) | 2020.09.11 |
webhacking.kr : challenge 20 (0) | 2020.09.11 |
webhacking.kr : challenge (0) | 2020.09.11 |