[Webhacking.kr] 24번 문제풀이
오늘은 "Webhacking" 24번 문제를 풀었다. 밖의 날씨도 비가 오고 늦잠도 자버려서 점수 배점이 낮은 문제를 풀었다.
24번 문제에 들어가면 아래의 화면처럼 'client ip'와 'agent'가 보인다. 'agent' 옆을 보니 사용자의 환경을 뜻하는 것 같았고, 'client ip'는 난수가 들어가 있는 것처럼 보였다. 그리고 'Wrong IP!'까지 현 화면에서는 문제를 풀 수 없는 것들만 보였다.
처음 화면에서는 아무것도 발견할 수 없어서 'view-source'에 들어가서 소스코드를 확인해보기로 했다. 아래 화면은 24번 문제의 소스코드이다.
문제를 풀기 위해선 소스코드를 해석해야한다.
소스코드 해석
1. extract 함수
해당 함수는 배열 속의 키의 값들을 변수화 시키는 것이다.
예를 들어
$a[x] = "Hello";
$a[y] = "World";
extract($a);
echo $x;
echo $y;
결과 값은 "Hello World"가 출력되는 것이다.
사실 extract() 함수를 사용하지 않고 배열을 이용해서 출력할 수 있다.
$a[x] = "Hello";
$a[y] = "World";
echo $a[x];
echo $a[y];
결과 값은 위와 같이 "Hello World"가 출력될 것이다.
extract($_SERVER);
extract($_COOKIE);
2. htmlspecialchars() 함수
해당 함수는 HTML 코드가 들어가는 특수 문자를 일반 문자로 인식되어 출력되게 하는 것이다.
'&' -> '&'
'"(큰 따옴표)' -> '&quit;'
''(작은따옴표)' -> '''
'<' -> '<l'
'>' -> '>'
위에 써놓은 것처럼 HTML 코드가 들어오면 우리가 일반 문자로 바꿔주는 함수인데, 문제를 풀 때는 사용하지 않는 것 같다.
(문제에 풀 때 필요한 것이면 댓글로 알려주시겠어요?)
$ip = htmlspecialchars($REMOTE_ADDR);
3. str_replace("1번","2번","3번") 함수
1번째 인수 : 변경 대상 문자
2번째 인수 : 변경하려는 문자
3번째 인수 : 변수 또는 문자열
즉, str_replce("노랭이", "키큰", "노랭이 라바")라고 할시
'노랭이 라바' -> '키큰 라바'로 바뀌게 된다.
그러면 해당 소스코드는 아래와 같이 "ip" 값이 아래와 같이 바뀔 것이다.
'..' -> '.'
'12' -> ''
'7' -> ''
'0' -> ''
$ip = str_replace("..",".",$ip);
$ip = str_replace("12","",$ip);
$ip = str_replace("7.","",$ip);
$ip = str_replace("0.","",$ip);
4. 'ip'값이 127.0.0.1 일 경우 문제가 풀리게 된다.
if($ip=="127.0.0.1"){
solve(24);
exit();
}
문제 풀이
이제 본격적으로 문제를 풀기 위해서는 (나 같은 경우는 크롬을 사용했다.) 쿠키 하나를 추가시켜줘야 한다.
저는 "EditThisCookie"라는 확장 프로그램을 이용해서 'REMOTE_ADDR'를 추가시켰다.
추가시키는 방법은 아래와 같다. 일단 오른쪽 위에 있는 쿠키 모양의 아이콘을 클릭한다. 그다음 '+' 모양을 클릭한다. 그리고 추가하고 싶은 이름의 쿠키를 작성하면 끝이다.
'쿠키 아이콘 클릭' -> '+' 클릭 -> 추가하고 싶은 쿠키 이름 설정 후 '체크 표시' 클릭
REMOTE_ADDR에 값을 넣어서 ip 값을 127.0.0.1이 출력되게 하려면 "112277...00...00...1"을 넣어주면 된다.
112277...00...00...1
빨간색으로 된 글자는 지워지게 되고, 회색 바탕으로 된 것은 '..' -> '.'로 바뀌게 된다. 그래서 아까 만들었던 REMOTE_ADDR 값에 112277...00...00...1 넣어주면 끝이다.
쿠키 값에 값을 넣고 'F5'을 눌러주면 아래와 같은 팝업창이 뜨게 된다.
'client ip' 값에는 127.0.0.1 이 출력되면서 100 point을 얻었다는 문장과 함께 문제를 풀었다.
*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.
'공부 > Webhacking' 카테고리의 다른 글
[Webhacking.kr] 26번 문제풀이 (6) | 2020.03.08 |
---|---|
[webhacking.kr] 6번 문제풀이 (4) | 2020.03.04 |
[Webhacking.kr] 1번 문제풀이 (2) | 2020.03.03 |