티스토리 뷰

1. Webhacking 5번 문제 메인.

인젝션 문제인가? 생각을 했었습니다. 근데 Join을 막아버린 것으로봐서 인젝션 문제는 아닐 거라고 생각했습니다.

2. Login을 누르고 아무 글자나 입력했는데 'id is not admin' 이라고 나오네요. 이 말은 즉, id가 admin이여야 한다는 겁니다.

3. 소스 보기를 했더니 mem/ 디렉토리가 보이네요? 흠..mem/ 을 주소창에 입력해봤습니다.

4. 역시나 mem/ 디렉토리에 join.php, login.php 등이 있네요. 저희가 들어갈 곳은 join.php입니다. 회원가입을 하고 admin으로 로그인 해야 성공을 하는 시나리오입니다.

5. join.php를 들어갔는데, 아무 것도 없네요..과감히 F12 클릭

6. 줯같이 난독화 되어 있네요. python으로 그냥 하나하나씩 대입하면서 치환해봤습니다.

7. 치환을 하고 난 후의 모습입니다. 깔끔해졌네요. 소스를 설명하자면, cookie값에 oldzombie가 있어야 하고, 파라미터 값으로 'mode=1'이 있어야 한다고 합니다. 바로 실천에 들어가보겠습니다.

8. 일단 크롬 확장도구(Edit Cookie)로 oldzombie를 생성.

9. join.php 뒤에 'mode=1'을 붙여서 Enter를 존나 쎄게 칩니다.

10. 밑에 테이블이 떴네요. 여기까지 왔으면 거의 다왔습니다.

11. 'admin'으로 가입하려고 하자 이미 존재하다고 뜹니다. 

12. 원래 저 id값의 maxlength(최대문자열갯수) 는 "5"였습니다. Paros(파로스)를 이용해서 maxlength를 10으로 바꿔보겠습니다.

13. %20(공백)을 이용해서 admin 뒤에 붙여서 가입을 해보겠습니다. 이것은 php의 insert 버그를 이용한 것으로 데이터베이스 column의 길이가 제한되어 있으면, 그 이상의 길이의 값이 들어와도 제한된 길이 만큼만 저장하 고 그 뒤의 값들은 버리는 것입니다. 이 경우 id 컬럼의 길이는 5로 제한되었는데, 길이가 10인 값이 들어와도 앞 다섯 글자만 잘라서 전달하기 때문에 뒤의 문자는 DB에 저장하지 않습니다.

14. 가입이 되었습니다.

15. 다시 login.php로 돌아와서 id = admin, pw = suspect로 로그인 하겠습니다.

16. Clear!


'Wargame > webhacking.kr' 카테고리의 다른 글

Webhacking.kr 32번 문제 풀이  (0) 2015.07.04
Webhacking.kr 42번 문제 풀이  (0) 2015.07.03
Webhacking.kr 24번 문제 풀이  (0) 2015.07.02
Webhacking.kr 38번 문제 풀이  (0) 2015.06.30
Webhacking.kr 26번 문제 풀이  (0) 2015.06.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함