보안세상

wowhacker level7 본문

문제풀이

wowhacker level7

똔민 2015. 6. 23. 19:56
반응형


webgame.wowhacker.com/AuThWithMySQL/로 접속해보니 인증을 요구 하네요. mysql 인증 관련 문제인가봅니다.







guest:guest로 로그인 해봅니다.




로그인 해보니 name group address phone numbuer hitnum 등이 표시되네요.

이 내용은 guest 에 관한 내용이고 실제 정답은 admin에 있겠죠. 

메소드 를 통한 인증을 위해해보기 위해 DHC를 이용했습니다.


header에 Authorization: Basic YWRtaW46YWRtaW4K 를 줘서 마찬가지로 옵션에 전송을 합니다.

간략한 설명으로는 authorization은 인증이란 소리고 basic 은 base64를 이용한다는 소리입니다.

일반적으로 base64는 url 인코딩을 통해 많이 사용합니다.그러므로 url에 적용이 가능합니다.

마지막 뒤에 YWRtaW46YWRtaW4K 는 admin:admin 을 base64로 바꾸어서 입력 한 내용입니다.

header에 인증정보를 주고 전송을 해보니 접속이 먹히는 것을 볼 수 있습니다.

guest와 마찬가지로 name group address phone number hitnum을 볼 수 잇죠.

음...아직 문제를 다 풀지 못했다네요.

이 문제는 인증에 관한 문제라기 보다는 테이블 이름이 명시되어있고 mysql이라는 점에서 sql인젝션이라고 추측해보고 sql인젝션 관점에서 접근 해봤습니다.

guest' order by 1#:guest 를 base64로 바꿔서 아까와 마찬가지로 authorization basic : Z3Vlc3QnIG9yZGVyIGJ5IDEjOmd1ZXN0 을 입력해 봤습니다.

1부터 증가해서 guest' order by 6#:guest 까지 해보니 위와 같은 화면이 나오네요.

guest' order by 7#:guest 를 base64로 바꿔 authorization basic :Z3Vlc3QnIG9yZGVyIGJ5IDcjOmd1ZXN0 으로 전송해보니 테이블이 안뜨네요. DB테이블은 6개가 있나봅니다.


DB테이블 갯수를 알았으니 이제 본격적으로 DB 스키마 테이블을 찾아볼건데요.




-1' union select 1,2,3,4,5,table_name from information_schema.tables limit 0,1#:admin 을 base64로 인코딩후 아까와 같이 인증에 넣고 전송합니다. 

옵션들은 sql에서 질의하는 내용입니다. mysql관련된 책에 첫장쯤에 나오는 내용입니다.

-1 이란 의미는 끝의 정보와 만나면 이게 이어져버리는것을 방지하기 위해 -1을 주어 매치 시키지 않게 하기 위해 일부로 잘못된 값을 주는 의미고 limit은 보여줄 값을 지정하는 명령으로 0,1은 시작위치,표시갯수를 의미합니다. 

똑같은 내용 계속 볼 필요 없으니 1은 고정시키고 0부터 차례대로 늘려봅시다.


전송해보니 charcter_sets이 튀어나오네요. 오호~


마찬가지로 collations 튀어나오고


collation_characeter_set_applicability 가 튀어나오네요. 저는 다 푼 다음에 블로그에 정리 해두는것이니

생략해서 결론만 넘어가겠습니다. 마찬가지로 0부터 쭉 늘리시다보면



17번째에 keytable과 18번째의 user_info 가 나오게 됩니다. 다 제끼고 이 두 내용이 중요합니다. 

자 그럼 구한 column_name을 바탕으로 keytable을 질의해보겠습니다.

-1' union select 1,2,3,4,5,column_name from information_schema.columns where table_name='keytable' limit 0,1#:admin 을 base64로 인코딩해 LTEnIHVuaW9uIHNlbGVjdCAxLDIsMyw0LDUsY29sdW1uX25hbWUgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyB3aGVyZSB0YWJsZV9uYW1lPSdrZXl0YWJsZScgbGltaXQgMCwxIzphZG1pbg==를 질의해보니 


NO와 VALUE가 나오네요. 맨 마지막은 안뜨는걸 보니 column은 no,value가 전부인가 봅니다.




마지막으로 질의하기 위해 -1' union select 1,2,3,4,no,value from keytable#:admin 로 질의해주니 

뭔가 나오네요. If you dream it, you can do it 이 나오네요. 해결한듯 싶습니다. 인증하러 가봅시다.



ps-풀다 보면서 느낀점인데 문제가 쉽습니다. 요즘 해킹문제에 비해 sql인젝션시 필터링이 전혀 안되있고 꼬는 문제도 없고 머리를 써본다든지 노가다를 할 필요가 현저히 적었습니다.

반응형

'문제풀이' 카테고리의 다른 글

wowhacker level5  (0) 2015.06.23
wowhacker level3  (0) 2015.06.23
wowhacker level1  (0) 2015.06.23
hack-me.org 문제 41  (0) 2014.01.21
Comments