Wargame/webhacking.kr

    Challenge old 25 (150)

    Challenge old 25 (150)

    메인 화면은 file=hello라서, hello 대신 flag를 넣어봤다 code에 있다고 한다.. 이번엔 index를 넣어보자 아무 것도 안 뜬다 FLAG is in the code라고 하니, PHP Wrapper를 사용해보자 Wrapper 종류는 여러가지가 있지만 이 문제에서는 필터를 사용한다 (이외는 다음 링크 참고: https://opentutorials.org/module/4291/26819) php://filter wrapper는 다양한 I/O stream을 다루는데 사용하는 wrapper로, 코드 내부를 열람할 수 있고 형식은 다음과 같다 ?pages=php://filter/convert.base64-encode/resource= 그럼 이를 문제에 적용해보면, pages 대신 file, re..

    [미완] Challenge old 21 (250)

    [미완] Challenge old 21 (250)

    BLIND SQL INJECTION id : pw : Result : form은 get 메소드로 되어 있네요

    Challenge old 20 (200)

    Challenge old 20 (200)

    뭐 알 수 없는 input 박스들이 있고 소스를 보면 다른 건 별거 없고, submit 버튼을 클릭하면 ck()가 작동된당 ck 함수는 다음과 같다 일단, 코드에 나 오는 id, cmt, captcha는 메인 화면에서 볼 수 있는 input 박스들의 이름이다 마지막 if문을 보면, captcha.value가 captcha_.value와 같지 않을 때 return 된다 그거랑 별개로 코드에 나와있는 value가 있는데, 넣어보면 아무 일도 일어나지 않는다. 그냥 쓸데 없는 건가 그리고 captcha 박스 옆의 값을 그대로 입력해보면, 느리다고 한다.. 지금 보니 time limit이 2초닼 그러니 이 값을 콘솔창에 2초 내에 넣어주자!

    Challenge old 19 (150)

    Challenge old 19 (150)

    메인 화면은 id를 제출하는 것 그대로 제출을 눌러보면 내가 admin이 아니라고 한다.. 그 권한을 얻는게 목표일 것 같다 input 박스는 최대 길이가 5밖에 안되어서 admin or 1=1 같은 장난을 못친다 이번엔 root로 login 해봤다 hello root라는 문구와 함께 logout 버튼이 뜬다 logout 버튼을 눌러보면 아무 일도 안 일어난다 소스를 보면 클릭 시 ?logout=1이 URL 뒤에 붙는다는데 아주 짧게 보이고 다시 없어진다 쿠키를 삭제해야 다시 돌아갈 수 있다 하지만, 어쨌든!! admin으로 로그인해야 하기 때문에 로그인 화면에서 admin을 어떻게 칠까 하다보니 get방식으로 id를 넘기는 방식으로 해결할 수 있을 것 같다 이름이 id니까 ?id=a%00dmin, 이런..

    Challenge old 15 (50)

    Challenge old 15 (50)

    들어가자마자 Access_Denied가 얼럿으로 뜬다 js 수정을 위해 burp suite로 잡아봤다! 참고로 Server Intercept 부분을 봐야 한다 뒤에 ?getFlag를 붙이라니 붙여봤다

    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번 인코딩한 값을 모두 나타내어 해당 값과 내가 가진 인코디드 문자열을 비교해, 원문을 찾자는 식이다.