old(14)
-
webhacking.kr(old) 44번 문제
문제를 들어가면 생성되는 화면은 이러한데 바로 소스코드를 확인해보자. 처음엔 sql injection 문젠가 싶어서 이것저것 해봤는데 답이 안나와서 code injection쪽으로 생각을 해보았다. echo hello (입력한 식)으로해서 출력이 되는 것 같다. 그럼 ;ls 를 입력한다면 파일들이 모두 보일 것이다. 바로 입력해보자. 이렇게 그냥 문제로만 출력된다. 아마 ' (싱글쿼터) 의 내부 안에 입력값이 있기 때문에 문자열처리 되어서 저렇게 나오는 것 같다. 그렇다면 ;ls 를 ' 로 둘러주자 ';ls' 그럼 위와같이 ls 가 실행된 모습을 볼 수있고, 저 flag 가 있을거 같은 디렉토리로 이동해보자. 이렇게 플레그가 출력된다.
2019.11.18 -
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