일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- 사이버보안
- cloud run
- spring Batch
- 시스템 해킹
- 보안
- docker
- webhacking.kr
- sequelize
- 회고
- gcp
- 웹해킹
- 스프링 배치
- 프로그래머스
- kotest
- hackctf
- programmers
- 웹보안
- 파이썬
- gcp cloud build
- node.js
- gcp ci/cd
- 리버싱
- 네트워크
- 포너블
- Baekjoon
- pwnable.xyz
- nodejs
- 백준
- Batch
uju's Tech
4. webhacking.kr 24번 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
24번 문제에 들어가자마자 위와 같이 나옴을 볼 수 있다.
딱 보자마자 무엇을 의미하는지 잘 모르겠다.
그러니 ctrl+shift+i 를 눌러서 크롬 개발자 모드로 들어가보도록 하겠다.
소스를 확인해보니 주석 처리가 되어있는 부분이 보인다.
source 가 index.phps라고 한다. 주소창에 url뒤에 index.phps라고 치고 들어가본다.
오.. 소스코드가 나온다!!
전체적의 의미를 파악하기 전에 solve부터 확인한다. $ip가 127.0.0.1 이면 풀린다고 한다.
그럼 코드를 하나씩 살펴보자.
extract(): 배열 속의 키값을 변수화 시켜주는 함수
REMOTE_ADDR:현재의 클라이언트이 IP가 들어있다.
클라이언트의 IP가 존재하지 않으면 REMOTE_ADDR에 접속한 클라이언트 IP저장하라는 의미이다.
ip 변수에 클라이언트 IP를 저장한 REMOTE_ADDR 저장
$HTTP_USER_AGENT: 클라이언트 정보 저장
agent 변수에 $HTTP_USER_AGENT 저장
srt_replace=문자열 치환 함수
주어진 value라는 값에서 a를 b로 바꾸고 싶다면 str_replace("a","b",$vlaue); 형식으로 쓰는 함수이다.
클라이언트 ip에 12 라는 문자 들어오면 공백으로 대체 ip에 7. 이라는 문자를 공백으로 치환 ip에 0. 또한 공백으로 치환하라는 의미이다.
클라이언트의 ip가 127.0.0.1이면 문제가 풀린다.
위에서 12이면 공백으로 치환한다고 했으므로 1122 중복을 해주어 공백으로 치환되었을 때 12가 나오게 해준다.
7. 이면 공백으로 치환하므로 77..
0. 이면 공백으로 치환하므로 00..
그러면 127.0.0.1 이라는 온전한 ip가 출력이되려면 112277..00..00..1 을 입력을 해주면 될거같다.
edit cookie를 켜서 REMOTE_ADDR에 112277..00..00..1 을 대입해 주도록 하자.
새로운 쿠키를 만든후 값을 넣어준다.
넣어준 후 새로고침 하면 위와 같이 IP가 바뀌면서 solve!
그리고 새로 쿠키를 만들어서 client의 ip를 바꾸었으므로 삭제해준다!
끝!
'Security > Webhacking.kr' 카테고리의 다른 글
6. Webhacking.kr 58번 (0) | 2020.06.13 |
---|---|
5. Webhacking.kr 32번 (0) | 2020.06.13 |
3. webhacking.kr 18번 (0) | 2020.06.13 |
2. webhacking.kr 4번 (0) | 2020.06.13 |
1. webhacking.kr 가입하기 (0) | 2020.06.13 |