Challenge 5
5번 문제는 JavaScript와 SQL의 Insert문을 이용하는 문제입니다.
문제화면 입니다. Login버튼과 join버튼이 있습니다.
join버튼을 누르니 Access_Denied 창이 뜹니다.
login을 해보니 admin이 아니라고 뜹니다. 고로 저희는 admin아이디로 로그인을 해야할 것 같네요.
우선 Join페이지를 들어가야합니다. 로그인 경로를 보면 '/mem/login.php' 입니다.
여기서 Guessing의 필요성이 느껴집니다.
'/mem/join.php'로 접속을 해봅시다.
접속하니 검은화면만 있어서 페이지 소스를 봤습니다.
자바스크립트가 난독화되어 있군요. 비교적 쉬운 난독화에 속하니 개발자도구를 이용하여 난독화는 풀어봅시다.
이렇게 개발자도구의 콘솔을 이용하여 난독화는 해제했습니다.
해당 조건이 만족되면 document.write로 html소스를 출력해주는군요.
쿠키를 추가하고 URL에 mode=1을 추가해줍니다.
이제 join을 할 수 있습니다. admin으로 로그인하기 위해 데이터베이스에 Insert를 해야합니다.
admin을 입력 후 Join하게 되면 이미 admin 아이디가 있다고 알려줍니다.
길이 제한도 걸려있어서 딱 admin만 입력이 가능했죠.
프록시를 사용해도 되고, 개발자도구를 이용해 html을 수정해서 하셔도 됩니다.
길이 제한을 높게 설정하고, 'admin '를 입력합니다. 공백을 하나 주는거죠.
등록이 되었습니다.
admin으로 로그인을 해봅시다.
문제가 해결되었습니다.
문제의 SQL구조를 확인해 보기 위해 위 처럼 직접 Insert문에 공백을 추가해보았습니다.
이 처럼 데이터베이스에 저장될 때는 공백이 제거된것을 확인할 수 있습니다.
공백이 제거되었기에 admin으로 로그인이 가능하였습니다.
'Wargame | CTF > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 7 (0) | 2016.11.09 |
---|---|
[Webhacking.kr] Challege 6 (0) | 2016.11.07 |
Webhacking.kr Challenge 4 (0) | 2016.11.06 |
Webhacking.kr Challenge 3 (0) | 2016.11.06 |
Webhacking.kr Challenge 2 (0) | 2016.11.05 |