2019. 10. 15. 00:41ㆍWargame/webhacking.kr
24번 문제의 메인 화면입니다.
바로 소스를 확인해봅시다.
소스를 해석해보면
우선 IP가 127.0.0.1 이면 풀리는것 같고
그 전에 조건문에서 str_replace()함수를 통해서
.. -> . , 12 -> "" , 7. -> "" , 0. -> ""
으로 각각 변환된다.
실제로 값을 넣어서 어떻게 조작되는지 확인해보자.
쿠키값의 이름으로 REMOTE_ADDR 이라는 이름을 지정해주고
값으로 127.0.0.1을 입력해주었다.
그랬더니 메인페이지의 client ip 창에 1이라는 숫자밖에 남지 않았다.
이러한 현상의 이유는
127.0.0.1 의 값을 넣어줬는데
12(공백으로 변환)7.(공백으로 변환)0.(공백으로 변환)0.(공백으로 변환)1
이 되어서 1만 남게 된 상황이다.
str_replace() 함수는 처음 한번 변수에 저장된 값을 검사하여 변조하고 그 후 다시 저장된 값은 검사를 하지 않는다는
특성이 있다.
그래서 112277...00...00...1 을 적어주면 어떻게 될까?
-> 112277...00...00...1 라는 문자열에서 검사를 하여
112277...00...00...1
->127..0..0..1 의 형태로 빨간색의 글자가 필터링 해서 공백으로 치환된다.
-> 하지만 저 상태에서 .. 은 .으로 또 치환이 되기 때문에
127..(.)0..(.)0..(.)1
->의 상태로 치환되어 127.0.0.1 의 값으로 변조된다.
그렇다면 REMOTE_ADDR 의 쿠키값에 112277...00...00...1 를 적어주자.
IP 의 값이 127.0.0.1 로 바뀌면서 문제가 풀렸다.
'Wargame > webhacking.kr' 카테고리의 다른 글
webhacking.kr 27번 문제(old) (0) | 2019.10.15 |
---|---|
webhacking.kr 26번 문제(old) (0) | 2019.10.15 |
webhacking.kr 23번 문제(old) (0) | 2019.10.10 |
webhacknig.kr(old) 18번 문제 (0) | 2019.10.10 |
webhacking.kr(old) 17번 문제 (0) | 2019.10.09 |