티스토리 뷰
일단 입력할 수 있는 칸이 있고, 입력한 문자열을 제출버튼을 눌러 서버에 전달하는 형식인 것 같습니다. 아래에 보면
Your mission is to inject <script>alert(1);</script>
이라는 문장이 있는데 script문을 실행시키는 것이 이 문제의 의도로 보여집니다.
javascript문은 <script>태그를 이용해서 html문서에 직접 작성해 동작시킬 수 있습니다.
그래서 일단 저 script문을 그대로 넣어봤습니다.
No hack 이라는 문구가 나옵니다. 위에 URL을 보면
?code=<script>alert%281%29%3B<%2Fscript>
를 통해 일단 code라는 변수에 GET방식으로 작성한 문자열이 전달되는 것을 알 수가 있습니다.
여기서 no hack이 나온 이유를 저번에 푼 18번 문제와 같이 문자나 문자열이 필터링되어 있지 않을까 라는 추측을 해봤습니다.
이 문제는 페이지 소스보기를 해도 php문서를 보여주지 않기 때문에(원래 웹 브라우저의 소스는 웹 컨테이너에서 html로 다 바꿔주기 때문에 php문을 보여주지 않긴 합니다…)문자열들을 넣어서 필터링 된 문자열들을 찾아내 봤습니다.
보면 나머지 문자들은 그대로 출력이 되고, script나 alert같은 문자열들만 필터링 되어 있는 것 같습니다. 그러다가 생각한 점이, 위에서 보면 s하나는 필터링을 하지 않습니다. 즉 문자 하나는 필터링 하지 않고 연속으로 문자들이 나올 경우를 필터링해주는 거구나 였습니다.
sc도 필터링하는 걸 보면 배열이나 스트링에 문자열이 들어가 배열의 index 1번을 넘어가 거나 스트링에 문자가 연속으로 나오면 필터링을 해주는 것 같습니다. (참고로 한글을 넣으면 그대로 출력됩니다)
따라서 연속으로 나오는 문자열을 필터링해주는 것을 우회해주면 풀리겠구나 했습니다.
처음에 문자열 사이에 띄어쓰기를 해봤습니다.
a l e r t(1); 이 왜 나왔는지는 모르겠지만
당연히 이 방법은 아닌 것 같네요
위 URL에 +된 것을 보고 저번에 했던 것처럼 URL인코딩을 이용해 봤습니다. URL인코딩 표를 보고 문자를 다 인코딩했습니다.
<%73%63%72%69%70%74>%61%6C%65%72%74(1);</%73%63%72%69%70%74>
방식을 잘못 이해한 거 같네요 ;; %도 %25로 인코딩되어 버립니다.
이걸 URL넣어봤습니다.
스크립트 문이 그대로 들어가네요. 생각해보니까 디코딩되서 문자열로 만들어지면 다시 필터링이 되겠네요…..
다시 문자열 사이에 공백 같은 값을 넣어주는 쪽으로 전환해서 %0a를 이용해
<%00s%00c%00r%00i%00p%00t%00>%00a%00l%00e%00r%00t%00(1);<%00/%00s%00 c%00r%00i%00p%00t%00> 를 넣어봤습니다.
다 띄어쓰기가 되고 풀리지는 않습니다
띄어쓰기말고 문자열 우회하는 방법을 찾아보니까 NULL문자를 사이사이에 넣는 방법이 있습니다. 그걸 인코딩 해서 %00을 넣어봤습니다.
<%00s%00c%00r%00i%00p%00t%00>%00a%00l%00e%00r%00t%00(1);<%00/%00s%00 c%00r%00i%00p%00t%00>
Congratulation! 해줍니다!
'Security' 카테고리의 다른 글
쉘 코드(/bin/sh (0) | 2019.01.16 |
---|---|
SQL 인젝션 (0) | 2019.01.14 |
Webhacking.kr 18번 (0) | 2019.01.10 |
XSS (0) | 2019.01.10 |
어셈블리어 (0) | 2019.01.10 |
- Total
- Today
- Yesterday
- Spring
- 지옥에서 온 git
- 프로그래머스
- 스프링
- 쉽게 배우는 운영체제
- Spring Boot
- 운영체제 반효경
- Spring Data JPA
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- Gradle
- 생활코딩 javascript
- 패킷 스위칭
- 스프링 컨테이너
- 스프링 테스트
- jsp
- 파이썬 for Beginner 연습문제
- 파이썬 for Beginner 솔루션
- git
- JPA
- 선형 회귀
- git merge
- spring mvc
- 방명록 프로젝트
- Thymeleaf
- Python Cookbook
- Computer_Networking_A_Top-Down_Approach
- 김영환
- 스프링 mvc
- 쉘 코드
- git branch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |