본문 바로가기

정보보안/wargame12

[webhacking.kr] challenge(old). old-12 해당 문제에 들어가면 javascript challenge라는 문구만 확인할 수 있다. js에 관련된 문제인 것 같으니 소스코드를 확인해보자 코드를 확인해보면 스크립트 코드가 난독화 되어있는 것을 확인할 수 있다. 난독화를 해제하기 위해 크롬 개발자 도구의 콘솔에 입력하면 해제된 코드를 얻을 수 있다. 이때 난독화 코드의 맨 마지막 부분에 ('_')라는 난독화 해제를 방해하는 의미 없는 문자열을 지운 뒤 콘솔에 입력해야 한다. 난독화를 해제한 코드는 위와 같다. 코드를 확인해 보자 var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); 총 4가지의 변수를 선언한다. 그중 ck변수 에는 d.. 2020. 4. 4.
[webhacking.kr] challenge(old). old-11 11번 문제의 시작화면이다. 특별한 점은 없으므로 바로 페이지의 소스를 확인해보면 간단한 php 소스를 확인할 수 있다. $pat="/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/"; if(preg_match($pat,$_GET['val'])){ solve(11); } pat 이라는 변수에 정규표현식이 문자열로 들어간다. pat에 들어가는 정규표현식은 [1-3] : 1~3중 하나의 숫자 [a-f]{5} : a~f중 5개의 알파벳 _ : '_' 문자 .* : 임의의 문자 0개 이상 $_SERVER[REMOTE_ADDR] : 접속자의 ip \t : tap을 의미, 따라서 tapptapatapstaps가 된다. url에서 \t 는 %09를 의미한다. 조건문에서 .. 2020. 4. 2.
[webhacking.kr] challenge(old). old-10 10번 문제에 처음 들어가게 되면 위와 같은 화면을 볼 수 있다. 회색 부분에 O라는 모양에 마우스 포인터를 올리면 yOu로 변경된다. 글자를 클릭하면 O라는 글자가 점점 오른쪽으로 이동되는 것을 확인할 수 있다. 아마도 맨 오른쪽의 goal이라는 부분까지 도착해야하는것 같다. 이외에 특별한 점은 없으므로 소스코드를 확인해보자. O hackme라는 id가 존재하고 클릭할 때 onclick 메서드를 통해 클릭시 1픽셀씩 이동하는 것을 확인할 수 있다. 또한 조건문에서 this.style.left의 값이 1600이 되면 Goal이 위치한곳과 같아지며 url에 '?go='+this.style.left이 추가되며 문제가 해결되는 것 같다. 직접 1600번의 클릭을 해도 가능하겠지만 너무 불필요한 행동이므로 다른.. 2020. 4. 1.
[webhacking.kr] challenge(old). old-09 9번 문제에 접근하면 볼 수 있는 화면이다. 각각 1, 2, 3이라는 숫자를 눌러보면 위처럼 url에 no라는 변수에 해당 번호가 들어가며 각각의 화면이 출력된다. 1~3 이외의 숫자가 no에 들어가게 되면 아무것도 보이지않는다. 이때 column은 id, no로 이루어져 있고 no=3 값이 들어가면 no 3's id is password라는 글로 보아 no=3의 id를 찾아내어 password에 입력하면 되는 것 같다. 그렇다면 이때 적용되는 쿼리문은 no의 값에 따라 출력의 변화가 생기므로 select id from table where no=~~ 로 적용된다고 생각할 수 있다. 1' or '1'='1', union 등을 입력한 결과 Access Denied라는 문구가 출력이 된다. 따라서 특수문자나.. 2020. 3. 21.
[webhacking.kr] challenge(old). old-08 8번 문제에 들어가게 되면 hi guest라는 문구와 함께 페이지의 소스를 볼수있는 곳이 있다. 특별한 점은 없으므로 소스부터 확인해 보자. 소스는 다음과 같으므로 소스부터 분석해 보자. $agent=trim(getenv("HTTP_USER_AGENT")); $ip=$_SERVER['REMOTE_ADDR']; if(preg_match("/from/i",$agent)){ echo(" Access Denied! "); echo(htmlspecialchars($agent)); exit(); } getenv()함수는 인자값에 따라 환경변수의 값을 알려주는 함수이다. getenv("HTTP_USER_AGENT")는 웹사이트를 접속한 컴퓨터의 웹브라우저 정보를 알려주게 된다. 따라서 agent변수에는 웹브라우저 정.. 2020. 3. 19.
[webhacking.kr] challenge(old). old-07 7번 문제에 들어가면 Admin page라는 글씨와 auth버튼이 있으며 url에 val=1이라는 의심스러운 변수가 보인다. auth 버튼을 누르게 되면 Acceess_Denied! 라는 알림창과 함께 별다른 반응이 없다. 그럼 페이지의 소스코드를 통해 알아보자. 소스코드를 볼수있는 php부분을 제외한 php코드를 하나씩 분석해보면 $go=$_GET['val']; if(!$go) { echo("url=index.php?val=1>"); } go라는 변수해 get방식을 통해 val변수의 값을 받아온다. 값을 받아 오지 못한다면 if문의 조건이 참이 되어 실행되어 url에서 val이라는 변수에 1이란 값을 get방식으로 전달해준다. 따라서 무조건 맨처음 볼수 있는 페이지가 등장하게 된다. if(preg_ma.. 2020. 3. 2.