본문 바로가기

php

(11)
wargame.kr strcmp 풀이 strcmp 문제를 풀어봅시당 Start를 누르고 문제에 들어가면 다음과 같이 form과 소스코드를 확인할 수 있는 view-source가 있습니다. view-source를 눌러 코드를 보니 POST로 받은 password가 사전 정의된 password와 같으면 플래그를 출력하지만, 이외의 경우에는 Wrong password..를 띄우고 끝납니다. 근데... 마지막 값 비교가 ==로 매우 수상합니다. ==를 활용하여 NULL과 0을 느슨한 비교할 경우에는 다음 표와 같이 True가 반환되게 됩니다. 따라서 우리는 password 값을 읽을 수 없도록 해주면 되는데, 이를 위해서 name의 password 부분을 password[]로 변경하고 보내줍니다. 그러면 다음과 같이 플래그가 출력되게 됩니다. Re..
Webhacking.kr 60번 문제 풀이 60번 문제는 다음과 같은 문구로 환영(?)해준다. 우선 코드를 먼저 분석해보도록 하자. 코드를 보았을 때, 세션 ID(PHPSESSID)에 숫자가 아닌 다른 문자가 포함되어 있으면 Access Denied를 출력하며 코드를 탈출한다는 것을 알 수 있다. 위와 같은 사실을 알고난 뒤 우리의 세션 ID를 보면 알파벳과 숫자가 섞여있는 것을 볼 수 있다. 그럼 조건을 맞춰주기 위해 저 세션 ID를 모두 지우고 아무 숫자로 바꿔주고 다시 로그인하여 활성화시켜주자. 이렇게 숫자로만 이루어지도록 만들어주면 비로소 제대로 반겨준다. auth를 해주기 위해 주소에 ?mode=auth를 넣어주면 1초동안 sleep상태에 있다가 로드됩니다. 하지만 아무런 값도 나오지 않고 Auth~만 나오게 됩니다. 코드를 확인해보면 ..
Webhacking.kr 48번 문제 풀이 문제에 들어가면 다음과 같은 창을 만나게 된다. 아무런 텍스트를 입력하고 Send버튼을 누르니 올라간다. memo라는 Input에서 보내지는 값이 배쉬 명령어로 처리되는지 확인하기 위해 ;ls를 입력해보았지만 아무 값도 나오지 않았다. 혹시나? 하는 마음에 삭제도 해보았지만 아무것도 나오지 않았다. 이제 남은것은 파일 업로드(upfile)밖에 없다. 그래서 아무 사진 파일이나 올려보았다. 사진을 올리니 [Delete] 왼쪽에 [upload file]이라는 버튼이 생기는것을 확인할 수 있었다. 이 버튼을 누르면 업로드한 사진을 볼 수 있었다. 그리고 [Delete] 버튼을 누르니 file deleted라는 문구와 함께 파일이 삭제되었다. 텍스트를 지울때는 그냥 아무런 표시없이 삭제되지만 파일을 삭제하는 경..
webhacking.kr 44번 문제 풀이 44번 문제에 들어가면 다음과 같은 화면이 반겨준다. 아무거나 입력하고 submit을 누르니 hello! [입력값]의 형태로 출력한다. 동작 원리를 분석하기 위해 view-source를 누르면 다음과 같은 코드를 확인할 수 있다.
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..