Wargame(86)
-
webhacking.kr 43번 문제(old)
이 문제는 웹쉘을 업로드해 flag 파일을 출력하면 풀릴 것 같다. 우선 웹쉘을 업로드하기 위해서 webshell.php 파일을 하나 만들어 준다음 이렇게 코드를 적어준다. 그후에 이 webshell.php 파일을 업로드해보자. 파일의 타입이 막히는것 같다. 아마 php 파일은 모두 똑같이 저런 화면이 뜰 것이다. 그럼 우리는 프록시 와 버프슈트라는 툴을 이용해서 중간에서 값을 가로채서 값을 변조해 볼 수 있다. 이렇게 중간에 값들이 어떻게 넘어가는지 확인할 수 있다. 여기서 Content-Type: application/octet-stream 이부분을 Content-Type: image/png 로 바꿔서 image 파일로 인식하게 해주고 값을 넘겨주자. 그렇다면 이렇게 webshell.php 파일이 업..
2019.11.09 -
webhacking.kr 42번 문제(old)
42번 문제를 보면 이렇게 파일을 다운로드 할 수 있다. 우선 두 파일을 모두 다운받아보자. 테스트 파일은 이렇게 정상적으로 다운받아졌지만 flag.docx 파일은 이러한 경고창이 생성되며 다운받아지지 않는다. 우선 이 문제의 경우에는 파일 다운로드 취약점이 발생한다. 소스코드를 확인해서 파일이 어디에 저장되는지 확인해보자. 보면 test.txt 파일이 ?down 로 GET방식으로 넘어가고 이상한 문자열이 있는것을 확인할 수있다. 우선 저 페이지로 들어가서 파일이 다운로드 받아지는지 확인해보자. 이렇게 파일이 다운로드 받아지는것을 확인했으니 저 파일 명을 알아야 할 것 같다. 저 파일 명을 복사해 base64로 decode 해보자. https://www.base64decode.org/ Base64 Dec..
2019.11.08 -
webhacking.kr 39번 문제(old)
가장먼저 소스코드를 확인해보자. 이러한 php 코드가 있는데 여기서 오류가 발생한다. $result 변수를 보면 id='{$_POST['id']}" 이렇게 닫는 싱글쿼터가 존재하지 않는다. 이러한 오류가 있는데 id 값을 str_replace 함수로 치환해준다. 치환값을 보면 ' 싱글쿼터는 '' 이렇게 싱글쿼터를 2개 붙혀 문자열을 닫아준다. 더블쿼터 또한 마찬가지이다. 하지만 여기서 발생하는 취약점은 substr() 함수인데 0번째부터 15번째까지 만 문자열을 잘라서 변수에 저장하기 때문에 15번째 이후로 오는 문자는 관여하지 않는다. 그래서 아무값이나 입력한 후 15번째 자리에 ' 싱글쿼터를 하나 입력하면 str_replace 함수를 통해서 ' 싱글쿼터 하나가 16번째 자리에 들어가기 때문에 문자열은..
2019.11.08 -
webhacking.kr 38번 문제(old)
아무 값이나 입력해보자. 우선 필자는 1이라는 값을 입력했다. 그렇다면 이제 현재 자신의 아이피:입력 값이 출력된다. 아마 자신의ip 에 해당하는 입력값이 admin 이면 풀릴 것 같다. 그럼 우선 admin 을 입력해보자. 어드민이 아니라고 한다. 이 경우에는 f12 를 눌러 소스보기를 한 후에 input 태르를 textarea 태그로 바꾼 후 아무값이나 입력한 후 줄바꿈을 해서 자신의 ip:admin을 적어보자. 이렇게 입력하고 admin.php 페이지에 들어가면?
2019.11.08 -
webhacking.kr 34번 문제(old)
이 debug me 라는 alert 창을 잘 기억해 두자 필자는 정석인지 아닌지 잘 모르겟지만 코드를 분석해서 찾았다. 소스코드를 확인해보면 위와같은 script 태그 가 있는데 그 태그를 까보면 이런 엄청난 문자열 들이 있다. 우선 보기 편하게 javascript beautifier 를 이용해서 코드를 보기쉽게 정리해보았다. 코드를 정리하면 이런식으로 나오는데 이 코드를 먼저 개발자도구의 콘솔창에 입력하자. 그리고 코드를 살펴볼건데 이러한 소스가 가장 눈에 띄었다. 이 소스를 보면 조건문을 거치고 아니라면 alert() 창을 띄우고 안에 어떤 문자열을 출력하는 것 같다. 그래서 alert(b('0x1e', '14cN')); 이 alert() 명령어를 복사해 크롬 콘솔창에 넣으면 이러한 처음 들어왔을때와..
2019.11.08 -
webhacking.kr 32번 문제(old)
위의 사진처럼 32번 문제에 들어가면 순위표 ? 비슷한게 보입니다. 그리고 아무 닉네임이나 클릭하면 아래와같이 분명 첫번째 사진에서 랭킹 2위의 값이 47 이였는데 클릭하니 48로 바뀌었다. 그러고 보니 ctrl + f 키를 눌러서 내 아이디 값을 찾은 후 그 점수를 100점으로 맞추어보자. 내 아이디를 누르니 이미 투표를 진행했다며 점수가 올라가지 않는다. 쿠키를 확인해보자. vote_check 라는 쿠키가 만들어져 있고 그 값에 ok 라고 적혀있다. 아마 이 쿠키값을 다른 값으로 바꾸면 투표가 진행 될 것 처럼 보인다. 하지만 그렇다면 100번의 쿠키값을 변경해 주어야 하기 때문에 ok 라는 값을 에초에 차단을 시켜보자. vote_check를 차단시켜버리니까 쿠키가 생기지 않아서 클릭만하면 생성되었다..
2019.11.08