가상환경에 OllyDbg를 설치 해준다. OllyDbg가 저장되어 있는 경로에 따라 경로를 수정해 준다.
기본 virtualbox의 설치는 진행되었다고 가정함 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ Virtual Machines - Microsoft Edge Developer Virtual MachinesTest IE11 and Microsoft Edge Legacy using free Windows 10 virtual machines you download and manage locally Select a downloadVirtual Machines Select oneIE8 on Win7 (x86)IE9 on Win7 (x86)IE10 on Win7 (x86)IE11 on Win7 (x86)IE11 on Win81 (x86) dev..
흐음.. 몰까.. admin 제출을 누르면 위의 그림과 같은 화면과 함께 시간이 지나면 refresh 된다. 여기서 알 수 있는 것은 id=admin으로 GET형식으로 받아온다는 것 정도? test라는 값을 입력했을때 login이 되는 것을 확인할 수 있다. 스크립트 코드를 확인해 보았지만 힌트가 될 만한 단서는 없었다. 그래서 쿠키 값을 확인해 보았다. 그냥 저대로 basse64 디코더를 돌려봤는데 값이 나오지 않았다. 그러고 보니 %3D가 = 이기때문에 이걸 변경해서 base64로 디코딩 해보니 e358efa489f58062f10dd7316b65649ee1671797c52e15f763380b45e841ec3203c7c0ace395d80182db07ae2c30f034e358efa489f58062f10d..
사용된 공격기법 : LFI(Local File Inclusion) 25번 문제를 실행했다. 문제를 보면 여러가지 파일 및 디렉토리의 권한 및 정보가 나와있다. url을 확인해 보니 file=hello라고 되어 있는 것을 확인할 수 있다. url 에 파일명을 입력하기 때문에 GET방식으로 파일을 받아오는 것을 알 수 있다. file=flag를 입력해보니 밑의 그림과 같이 다른 내용이 뜨는 것을 확인 할 수 있다. flag.php파일의 내용이 textarea부분에 출력되고, .php가 생략되어서 실행되는 것으로 추측할 수 있다. 실제로 hello.php와 flag.php 를 실행했을때도 textarea에 출력되는 동일한 값이 출력되는것을 확인할 수 있다. 여기서 주어진 힌트는 FLAG is in the co..
38번을 실행하면 밑의 그림과 같다 해당페이지에서는 확인 할 수 있는 것들이 없으니 F12를 사용하여 스크립트를 확인했다. 코드를 확인해 보면 스크립트는 확인할 수 없고 admin.php페이지로 가라는 힌트를 확인할 수 있다. admin.php 화면으로 이동해 보면 login 의 로그로 보이는 화면을 확인할 수 있다. admin을 넣으면 문제가 해결될것 같지만 실제로 admin을 넣으면 you are not admin의 값을 반환한다. 밑의 그림과 같이 가장 밑에 내가 로그인한 로그를 확인할 수 있다. 로그가 위에서 아래로 순서대로 log viewer에 출력되는 것을 보니 CRLF Injection을 이용한 문제임을 추측할 수 있다. - CRLF Injection 이란? CRLF라는 용어는 캐리지 리턴 ..
24번을 실행하면 밑의 사진과 같다. wrong IP 라는 것으로 보아 IP 관련 문제인것으로 추측할 수 있다. 확인 할 수 있는 view-source 를 확인해보도록 한다. SERVER와 COOKIE의 정보를 받아오는 것을 확인 할 수 있다. $REMOTE_ADDR 는 웹서버에 접속한 접속자의 IP정보를 갖고 있다. $HTTP_USER_AGENT는 유저의 브라우저 접속환경을 파악하는데 사용 되어지는 변수이다. 이것으로 브라우저별로 스타일을 다르게 보여지게 하거나 필요한 동작을 요청할 수 있다. 어떤 문자들은 HTML에서 특별한 정의를 가지기에, 그 의미를 보존하려면, HTML 엔터티로 표현해야 한다. htmlspecialchars()이 함수는 문자열에서 특정한 특수 문자를 HTML 엔티티로 변환한다. ..
문제를 실행시키면 아래 사진을 확인할 수 있다. 확인 할 수 있는 것이 view-source뿐이니 view-source를 확인하도록 한다 소스코드를 확인해 보면 빨간색으로 표시한 박스 부분이 핵심 부분인것으로 추측할 수 있다. 여기에 사용된 preg_match() 함수는 해당 문자열에서 전달받은 정규 표현식과 일치하는 패턴을 검색한다. preg_match($pattern, $subject [,$matches]); 의 문법으로 사용된다. 따라서 admin 과 일치하는 $_GET['id'] 일 경우 no!를 알려주고 종료하고 $_GET['id']를 디코딩한 값이 admin과 같을 경우 문제를 해결하는 것으로 분석할 수 있다. 즉, admin을 인코딩한 값을 넣으면 문제가 해결될 것으로 추측할 수 있다. 따라..
16번의 문제를 확인하면 위의 그림을 확인할 수 있다. 별표와 작은 별표만 확인할 수 있다. 해당 화면에서는 확인할 수 있는 내용이 없기 떄문에 chrome의 F12를 이용하여 스크립트 코드를 확인해 보도록 한다. 빨간 박스 친 부분의 cd의 값들이 숫자로 나타나있는 것으로 보아 아스키코드라는 것을 추측할 수 있다. 따라서 100, 97, 119, 125, 124의 값들을 아스키 코드로 확인해 볼 수 있다. 각각 97 a, 100 d, 115 s, 119 w, 124 | 의 아스키고드의 값을 가지는 것을 확인 할 수 있고, 해당 키를 눌러 보았을때 밑의 그림과 같이 움직이는 것을 확인 할 수 있었다. cd=124 의 | (파이프)의 아스키 코드의 경우 location.href=String.fromChar..