본문 바로가기

php

(7)
HackCTF - Web - Input Check 풀이 문제에 들어가니 또 input 하나와 버튼 하나가 기다리고 있다. flag를 쳐보라길래 flag를 쳐서 보냈더니 해킹하지 말란다. Hoxy나 하는 마음에 코드를 보니 주석으로 힌트가 작성되어 있었다. 배열? 배열??? 그렇다면 입력을 배열로 해준다면? 이해를 도와줄 글 : [PHP] strcmp 취약점을 이용한 인증 우회 문제가 풀리게 된다.
HackCTF - Web - Read File 풀이 문제를 들어가면 누가 봐도 구글 본뜬 것 같은 페이지가 기다린다. 우리가 주목해야할 부분은 여기. File is flag.php 주소창에 이 command라는 파라미터에 구글 주소가 기록되어있다. 그럼 flag.php도 command를 바꿔서 접속할 수 있지 않을까? 라는 생각에 무조건 바꿔보았다. Read File만이 뜨는것을 볼 수 있다. 이에 가설을 세워볼 수 있다. "flag라는 키워드를 필터링하는게 아닐까?" 가설의 증명을 위해 구글 주소 앞에 flag를 붙여보았다. 붙인 링크 그대로 접속해보니 처음에 봤던 화면과 똑같이 뜬다. 위의 증명을 통해 flag라는 키워드를 필터링한다는 것을 알 수 있게 되었다. 따라서 나는 이를 우회하기 위해 flag라는 단어가 필터링되어 없어져도 flag.php가 ..
wargame.kr md5_compare 풀이 오늘은 md5_compare문제를 풀어보려고 한다. 문제에 들어가니 다음과 같은 폼이 기다리고 있다. view-source라고 되어있는 링크를 눌러 코드를 분석해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Colored by Color Scripter cs ctype_alpha는 값이 모두 알파벳일떄 true를 리턴해주는 함수이고, is_numeric은 값이 숫자일때 true를 리턴해주는 함수이다. 따라서 우리는 VALUE 1에는 알파벳을, VALUE 2에는 숫자를 입력해주어야 하고, 그 두 값의 md5의 해시가 같아야 플래그가 나온다는 사실을 알 수 있다. md5 해시를 어떻게 같게할 수 있을까? 불가능하다. 그런데 여기서..
webhacking.kr 11번 문제 풀이 오늘은 그동안 못했던 웹해킹을 다시 해보려고 한다. 간단하게 11번으로 시작해보자. 문제에 들어가면 다음과 같은 창이 반겨준다. GET을 통해 val을 받는다는데 html이라고 적혀있어서 당황했으나, 잘 확인해보니 이 페이지가 PHP로 구동되고 있다는 사실을 알 수 있었다. 주어진 PHP 코드를 분석해보자. 1 2 3 4 Colored by Color Scripter cs pat이라는 변수에 조건이 있고, GET을 통해 받은 val을 비교하여 값이 같으면 풀리는것 같다. pat의 조건은 다음과 같이 정리할 수 있다. 코드 역할 충족할 값 [1-3] 1~3에서 1개를 선택합니다. 1 [a-f]{5}_ a~f에서 5개를 선택합니다. abcde .*172.0.0.1.* .*172.0.0.1.* \tp\ta\t..
우분투에 웹서버 설치하기(Apache2 + PHP + mySQL) 서버 환경서버 리전 : JP (Tokyo)운영체제 : Ubuntu 18.04 x64 1 vCore, 1GB RAM 오늘은 우분투에 웹서버를 설치해보자.우선 미러사이트들을 최신으로 패치해주기 위해 다음 커맨드를 실행해준다. $ sudo apt-get update $ sudo apt-get upgrade 위의 명령어로 패치를 완료했다면, 본격적으로 아파치를 설치해보자.다음 커맨드를 실행하면 디스크 공간을 사용한다는 질문이 나오는데, Y를 입력하여 허용해주자. $ sudo apt-get install apache2 이제 이 서버의 외부 아이피로 접속하면 Apache2 Debian Default Page 가 뜰것이다.이 페이지를 지우거나 수정하고 싶다면 /var/www/html 디렉토리에서 작업하면 된다. 아파..
xcz.kr 21번 문제 풀이 - 뜨개질 XCZ.KR PROB 21 풀이[ 뜨개질 ]XCZ.KR의 21번 문제를 풀어보자. 제목부터가 "PHP 난독화 깨기"여서 처음에는 "뭐 별거 아니겠지"라 생각했는데이뭐병.... https://www.unphp.net/를 통해 한번 디코딩해보니 다음과같이 변했다. 않이.... 대체 왜 변수 이름까지 저렇게 선언해둔거야,,,,,,한땀한땀 저 퍼즐을 맞춰보면 다음과 같이 짧은 코드로 변한다. 지금 이 조금의 코드를 저만큼으로 늘여둔거???(솔직히 좀 허무했어ㅇ...ㅛ....) 암튼 이제 원하던 원본 코드를 얻어냈으니 저 코드를 분석해보았다.기본 설정 / 조건받은 key값이 소문자 / 대문자의 영문 또는 숫자가 아닐 경우 "Error"을 출력하며 exit.받은 key값을 - 를 기준으로 분할하여 $a에 배열의 형..
wargame.kr type confusion 풀이 - json WARGAME.KR type confusion 풀이[ json ]오늘은 wargame.kr의 type confusion 문제를 풀어보자. 문제에 들어가면 다음과 같이 입력창 하나와 이 페이지의 소스코드를 준다. 우선 제공해준 Backend단의 코드를 한번 분석해보자. 우선 0.5초(500000 마이크로초)를 대기한 후, lib.php를 적재한 후 json형태로 넘겨받은 데이터를 파싱해 $json에 저장한다.$key에 welcome to wargame.kr!_(랜덤 문자열)가 SHA1으로 암호화된 값을 대입해준다.파싱된 JSON($json)에서 key값이 $key의 값과 같으면 flag를 출력해주고, 다를 경우 false로 응답해주는 $ret를 json 형태로 작성하여 응답해준다. 그럼 이제이 사이트에 있..