본문 바로가기

Webhacking.kr

(12)
[Webhacking.kr] Challenge 24 문제에 접속하면 내 ip와 agent를 보여주고 Wrong IP! 를 출력한다. 소스코드를 한번 보면 client ip{$ip}agent{$agent}"; if($ip=="127.0.0.1"){ solve(24); exit(); } else{ echo "Wrong IP!"; }?> 이렇게 되어있다. 한번 분석해보자 소스코드 분석extract($_SERVER);extract($_COOKIE); $_SERVER과 $_COOKIE의 배열들을 변수화함.extract(배열) : 배열 속의 키값들을 변수화하는 함수배열은 키와 값으로 이루어져 있는데, $data = array("name"=>"Alice","age"=>30)란 값이 있으면extract($data)를 하여 $name(키) = Al..
[Webhacking.kr] Challenge 10 문제에 접속하니 이런 화면이 나온다.  한번 소스코드를 보자. O 소스코드 분석style="position:relative;left:0;top:0"현재 위치onclick="this.style.left=parseInt(this.style.left,10)+1+'px';if(this.style.left=='1600px')this.href='?go='+this.style.left"클릭을 하면 this.style.left를 1px만큼 증가시킴만약 this.style.left가 1600px이라면 현재 링크/?go=(this.style.left의 값) 로 이동함parseInt(문자열, (진수)) : 문자열을 10진수로 변환함. 다른 진수로 변환하고자 하면 직접 입력onmouseover=this.innerHTML='y..
[Webhacking.kr] Challenge 18 오랜만에 ctf를 풀어보는것같다.. 문제를 한번 살펴보자 제목부터 SQL INJECTION이라 적혀있다! 우리가 지난번에 알아본 구문을 넣어보자( ' or 1=1--)  no hack?? 이렇게 쉽게 풀리지는 않을거라 생각했지만 진짜 안풀린다.. 일단 소스코드를 분석해보자  if($_GET['no']){ $db = dbconnect(); if(preg_match("/ |\/|\(|\)|\||&|select|from|0x/i",$_GET['no'])) exit("no hack"); $result = mysqli_fetch_array(mysqli_query($db,"select id from chall18 where id='guest' and no=$_GET[no]")); // admin's no = ..
[Webhacking.kr] Challenge 39 문제에 접속하니 입력란과 소스코드를 보는 페이지가 있다. 일단 아무거나 입력해보자. 제출 버튼을 누르면 ?? 아무런 반응이 없다. 그러면 다음으로 소스코드를 한번 보자  필요한 부분만 가져와서 한줄씩 분석해보자. $db = dbconnect(); if($_POST['id']){ $_POST['id'] = str_replace("\\","",$_POST['id']); $_POST['id'] = str_replace("'","''",$_POST['id']); $_POST['id'] = substr($_POST['id'],0,15); $result = mysqli_fetch_array(mysqli_query($db,"select 1 from member where length(id)  ..
[Webhacking.kr] Challenge 12 요즘 좀 바빠서 글을 자주는 못 올릴것 같지만 최대한 열심히 올려보겠습니다.  문제에 들어가니 javascript challenge라고 한다. 한번 소스코드를 살펴보자.  ??? 무슨 텍스트 얼굴들이 가득하다.. 소스코드를 가져와도 의미가 없을것 같으니 일단 풀어보자.. 처음에 어떻게 풀지 고민을 많이했다. 저것들을 의미없이 넣은건 아닐거고 특히 코드 처음 부분에 주황색이 있는걸 보아 저걸 코드로 인식하는것 같은데.. 계속 서칭을 해보니 자바스크립트 난독화라는걸 알게되었다.(다른 언어도 가능) 난독화란? 쉽게 말해 다른사람들이 읽기 어렵게 코드를 바꾸는것을 말한다. 이를 하는 이유는 나의 코드를 직접적으로 숨겨 다른 사람들이 이해하지 못하게 하기 위하거나코드의 가독성을 낮춰 역공학을 막기 위함이다(역공학..
[Webhacking.kr] Challenge 26 문제에 접속하면 view-source 가 있다 이를 한번 눌러보자   소스코드를 보니 처음 보는 함수가 있다. 이를 한번 알아보자 preg_match : 특정 문자열이 패턴에 부합하는지 검사하는 함수preg_match('/검사할 문자/', '입력한 문자') preg_match란 쉽게 말해 입력한 문자에서 특정 문자가 있는지를 찾고싶을 때 사용하는 함수이다.  이를 예시코드로 쉽게 알아보자. 먼저 변수 my_name 에는 이름을 저장하고 preg_match 함수로 이름에 z 가 있는지 체크해 있다면 "There is a 'z' "를 출력하는 코드를 실행시켜보자  이런식으로 쓰이는 함수가 preg_match 이다 다시 문제로 돌아와서  id 값에 admin이 들어있으면 no!를 출력하는걸로 보아 바로 값을 ..
[Webhacking.kr] Challenge 6 이번 문제는 조금 어려웠다.. 한번 같이 풀어보자  문제에 들어가보니 view-source 와 ID, PW가 보인다(원래는 ID : guest , PW : 123qwe) 우리가 할 수 있는건 소스코드를 보는것밖에 없으니 한번 눌러보자   헐..(밑에 잘림) 뭔가 복잡해보인다... 일단 소스코드를 가져와보겠다..더보기"); exit;}?>view-source");echo("ID : $decode_idPW : $decode_pw");if($decode_id=="admin" && $decode_pw=="nimda"){ solve(6);}?>(너무 길어 편의상 접어놓겠다.) 복잡해보이지만 포기란 없다! 일단 차근차근 살펴보자 if(!$_COOKIE['user']){ $val_id="guest"; $val..
[Webhacking.kr] Challenge 17 문제에 접속하니 이런 입력란만 있다. 한번 아무거나 입력해보자!  hello라고 입력하니 틀렸다고 한다. 한번 개발자모드를 눌러 확인해보자. 흠... 일단 스크립트 부분을 가져와보겠다. unlock=100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10/100*10*10+1/10-10+10+50-9*8+7-6+5-4*3-2*1*10*100*10*10+100/10-10+10+50-9*8+7-6+5-4*3-2*1*10+100*10*..