전체 글

전체 글

    Challenge old 12 (250)

    Challenge old 12 (250)

    소스를 보면 매우 귀엽게 난독화 되어 있다 요기가 코드 마지막 부분인데요, 맨 마지막에 이 부분을 없애주면, 아래 코드가 나옵니다! (function anonymous(){ var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i

    Challenge old 11 (300)

    Challenge old 11 (300)

    일단 다짜고짜 틀렸다고 합니다 핵심 코드를 보면 위와 같습니다 정말 solve(11)까지를 위해 단 두 줄밖에 없는데, 이해를 하나도 못했습니다 preg_match()함수에서는 pat 변수와 val 쿼리가 같을 때.. 결국 pat 변수가 의미하는 바가 중요한데, 구글링 해보니 정규표현식이라고 합니다 정규표현식이란 특정한 규칙을 가진 문자열의 집할을 표현할 때 사용하는 형식 언어로, 프로그래밍 언어, text editor등의 문자열 검색/치환에서 쓰인다고 합니당 여기서 쓰이는 문자를 Meta문자라고 하는데, 이를 통해 정규표현식의 의미를 파악합니당 Meta문자 의미 모음; https://hamait.tistory.com/342 어쨌든, 아래 코드를 해석해보면, $pat="/[1-3][a-f]{5}_.*$_..

    Challenge old 10 (250)

    Challenge old 10 (250)

    10번 문제 처음엔, 회색 부분에 0이 적혀 있고, 마우스 오버 하면, 위 사진과 같이 0이 y0u로 바뀌네요 코드를 봅시다! 회색 부분은 테이블로 되어 있고, id는 hackme.. 마우스 오버하면 yOu로, 마우스 아웃하면 O로 바뀐다네요, 0이 아니라 O였어여 코드를 보고 얻을 수 있는 것은, onclick 부분 한 번 클릭을 할 때마다, 엔티티가 오른쪽으로 10 픽셀만큼 움직이고, if문에는 왼쪽 여백이 1600px이 되었을 때, 하이퍼링크를 통해 어딘가로 이동하게 됩니다 코드를 보며 알게 되었는데, 초기 화면에서 오른쪽으로 스크롤을 돌리면 노란색으로 ||||Goal과 같은 엔티티가 더 있네요 Goal이 의미하는 것도, 왼쪽 여백도 딱 1600px입니다! 위의 yOu를 계속 클릭해서 이 Goal선..

    [미완] Challenge old 8 (350)

    [미완] Challenge old 8 (350)

    Access Denied!"); echo(htmlspecialchars($agent)); exit();}$db = dbconnect();$count_ck = mysqli_fetch_array(mysqli_query($db,"select count(id) from chall8"));if($count_ck[0] >= 70){ mysqli_query($db,"delete from chall8"); }$result = mysqli_query($db,"select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'");$ck = mysqli_fetch_array($result);if($ck){ echo "hi ".htmlentit..

    Challenge old 7 (300)

    Challenge old 7 (300)

    "); }echo("Admin page");if(preg_match("/2|-|\+|from|_|=|\\s|\*|\//i",$go)) exit("Access Denied!");$db = dbconnect();$rand=rand(1,5);if($rand==1){ $result=mysqli_query($db,"select lv from chall7 where lv=($go)") or die("nice try!");}if($rand==2){ $result=mysqli_query($db,"select lv from chall7 where lv=(($go))") or die("nice try!");}if($rand==3){ $result=mysqli_query($db,"select lv from chall7..

    Challenge old 5 (300)

    Challenge old 5 (300)

    Join 버튼을 눌러보자! 코드대로, 클릭을 하면, no()함수가 실행되고, Access_Denied라는 얼럿이 뜨는 걸 볼 수 있다 이제 Login을 눌러보자 Login 버튼을 누르면, move() 함수가 실행되며 page 변수에 login이 전달되고 mem/login.php로 이동하게 된다 해당 페이지로 이동하면 위와 같이 간단한 로그인 창이 나온다 이 페이지 소스는 진짜 별 거 없다.. 삽질의 기운이 느껴졌다 그래서 뭘까.. 하다가 mem/login.php? 앞에 mem이 뭔가 수상스러워서 패런트 디렉토리로 들어갔당 오 뭔가 좀 있는 것 같다 하나하나 들어가 보니, 나머지는 별 거 없고 아까 들어가 보지 못했던 join.php에 bye라는 얼럿이 뜬다 이 페이지 소스를 보니.. 난독화되어 있는 것 ..

    [미완] Challenge old 4 (300)

    [미완] Challenge old 4 (300)

    isset()함수는 변수가 있는지 확인해주는 함수다 chall4 변수가 존재하고, key값이랑 같으면 풀린다고 한다 해시값에 salt_for_you를 더한 문자열은 인코딩되어 계속 바뀌고..ㅎㅎ.. SHA-1를 코드 상에 500번 반복했다고 하니 500번 디코딩해야 한다.. 라고 생각했다 그런데 500번 디코딩 코드를 어떻게 작성해야 하나.. 하고 구글링 하던 중 레인보우 테이블을 이용하라는 정보를 획득했다. 구글링을 통해 10000000부터 99999999에 해당하는 랜덤 값 + salt_for_you의 문자열을 SHA1로 500번 인코딩한 값을 모두 나타내어 해당 값과 내가 가진 인코디드 문자열을 비교해, 원문을 찾자는 식이다.

    Challenge old 3 (350)

    Challenge old 3 (350)

    네모 로직을 풀어보자! 잘 풀었다고 내 이름을 남겨준다고 한다 처음에는 id인 줄 알았찌만 10글자 제한이 있었다 admin도 해봤지만 로그만 아래처럼 남겨질 뿐 아무 일도 일어나지 않았다.. name이 아니라 answer를 참으로 만들면 되지 않을까..해서 value값 뒤에 or 1=1을 추가했다 그랬더니 그대로 나왔다 or 대신에 ||를 써봤다 이것도 안된다.. 혹시나 공백이 문제일까봐 공백 대신 %0a를 사용했다 역시 실패 정말 혹시나 해서 쿼터를 닫아주고 1=1을 or로 붙여봤다 그랬더니 됐당~

    [미완] Challenge old 2 (500)

    [미완] Challenge old 2 (500)

    제한된 구역, 내 IP가 로깅되고 있다는 문구가 뜬다 소스를 보면, 날짜, 시간이 주석에 뜨고, admin.php 페이지가 있다는 정보를 알 수 있당 그래서 쿠키값을 봤다 time이라는 값의 쿠키가 있다... 이제 뭘 해야할 지 몰라서 admin.php 페이지로 이동해봤다 이 곳에 들어오면 엉덩이를 차버린다는데 여기에 플래그를 넣으면 될 것 같다.. admin.php는 post 방식으로 되어있당 이제 뭘 해야할 지 또 몰라서 쿠키 값을 바꿔봤다.. 기존 쿠키 값 뒤에 and 1=1을 집어 넣어 봤다! 다행히도 뭔가 변화가 생겼는데, 주석 부분의 시간이 2070년 1월 1일 09:00:01로 바뀌었당 이번엔 and 1=2를 집어넣어보자 거짓문에는 09:00:00으로 시간이 변하는 걸 알 수 있다 -----..

    10 우선순위 큐

    10.1 우선순위 큐 도로에서 사이렌을 울리는 구급차나 소방차가 일반 승용차보다 우선순위가 높은 것처럼, 컴퓨터에서도 우선순위의 개념이 필요할 때가 있다. 예를 들어 네트워크 패킷 중에서 네트워크 관리와 관련된 패킷은 다른 것들보다 우선순위를 가진다. 따라서 자료구조에서도 이러한 우선순위를 지원할 필요가 있다. 우선순위 큐Priority Queue는 이런 우선순위의 개념을 도입한 자료구조로, 마치 FIFO 원칙을 따르는 큐처럼, 우선순위를 가진 데이터들 중 높은 순 먼저 출력한다. 다양한 방법으로 구현이 가능하지만 가자 효율적인 구조는 힙heap이다. 따라서 우선순위 큐를 힙 트리Heap Tree라고도 부른다. 우선순위 큐 추상 자료형 우선순위 큐는 우선순위 값을 가진 요소들의 모임이다. 역시 요소의 삽..

    09 이진 탐색 트리

    09 이진 탐색 트리

    9.1 이진 탐색 트리 자료구조의 관점에서 탐색search은 자료구조의 중요한 응용 분야 중 하나로 탐색을 위해 특화된 이진트리인 이진 탐색 트리에 대해 알아보자. 탐색 탐색은 레코드record의 집합에서 특정 레코드를 찾아내는 것으로, 레코드들의 집합을 테이블table이라고 한다. 즉 테이블에서 특정한 레코드를 찾는 것이 탐색이다. 레코드는 1개 이상의 필드field로 구성된다. 예를 들어, '학생'에 관한 레코드는 이름, 학번, 학과 등의 필드로 구성된다. 레코드들은 보통 키key라고 불리는 하나의 필드에 의해 구별된다. 키는 서로 중복되지 않는 고유한 값을 가지며 이 키를 사용해 레코드들을 구별할 수 있다. 이 키를 주요키primary key라고 부르며 탐색은 입력된 어떤 키를 사용해 레코드를 찾는..

    08 트리

    08 트리

    8.1 트리의 개념 스택, 큐, 리스트는 모두 자료들이 일렬로 나열된 형태인 선형 자료구조linear data structure이다. 하지만 자료들이 계층 구조를 가지고 있다면? 컴퓨터 폴더 구조나 가계도, 조직도 등의 자료를 표현하고 싶을 땐 선형 구조로는 충분하지 않다. 이렇게 계층적 구조hierarchical structure를 표현하는 데 이용되는 자료구조가 트리tree이다. 트리의 용어 트리의 구성 요소에 해당하는 A, B, C, ..., K, L을 노드node라고 한다. 트리는 한 개 이상의 노드로 이루어진 유한 집합이다. 계층 구조에서 가장 위에 있는 노드를 루트 노드root node라고 한다. 위의 그림 8.1에서의 루트 노드는 A이다. 루트를 뺀 나머지 노드들은 서브트리subtree라고 ..