webhacking.kr(19)
-
webhacking.kr 46번 문제(old)
이번 문제또한 SQL Injection 문제인데 id 가 admin 이면 풀리는것 같다. 필터링 부분을 보면 공백 / * % 0x select limit cash 등이 필터링 되어있다. lv 를 GET 방식으로 받기때문에 url 주소창에서 lv 값을 넣어 SQL Injection 을 진행해보자 이제 admin 이란 값이 들어가지 않기 때문에 char() 함수로 대체해서 admin 을 만들어 주었다. 여기서 %26 은 &인데 이 값은 url encode 한 값으로 기본적인 SQL Injection 이라고 볼 수 있다.
2019.11.22 -
webhacking.kr 45번 문제(old)
소스코드를 보면 id 값이 mv_convert_encoding 함수에 의해 연산된 후 쿼리문에 적용된다. 그리고 id 와 pw 에는 admin , pw 등등의 문자열이 필터링 되고, id 가 admin 이면 문제가 풀리는 조건이다. 하지만 쿼리문에서 pw 는 md5 함수로 해시화 하기 때문에 직접 admin 의 pw 값을 알아내는 것은 어려울 것이다. 그래서 id 의 값을 이앵해 SQL Injection 을 진행해야 한다. [ mb_convert_encoding ] http://php.net/manual/kr/function.mb-convert-encoding.php 불러오는 중입니다... 여기서 mb_convert_encoding 취약점이 발생하는데 mb_convert_encoding 취약점이란? 멀티..
2019.11.22 -
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