[LOS] wolfman
2021. 5. 15. 18:45
Study/Web Hacking
wolfman에 접속! 이번 문제에서는 공백문자를 필터링하고 있다. wolfman을 해결하기 위해선 ' or id='admin을 injection하면 되는데 공백문자가 필터링되기 때문에 공백문자를 대체할 수 있는 문자를 찾아 사용해야 한다. 화이트스페이스를 우회하는 방법에는 다음과 같은 방법들이 존재한다. 1. Tab : %09 2. Line Feed(\n) : %0a 3. Carrage Return(\r) : %0d 4. 주석 : /**/ 5. 괄호 : () 6. 더하기 : + 7. 1~6번의 방법이 통하지 않을 경우 : %0b, %0c, %a0 위 7가지 방법 중 하나를 선택해 공백문자를 대체하면 된다. 필자는 Tab을 사용해서 해결했다.
[natas] Level 10 -> Level 11
2021. 5. 14. 23:09
Study/Web Hacking
: level 10 → level 11 http://natas11.natas.labs.overthewire.org 이번에도 역시 소스코드 먼저 확인했다. 소스코드는 다음과 같다. natas11
[natas] Level 9 -> Level 10
2021. 5. 14. 22:46
Study/Web Hacking
: level 9 → level 10 http://natas10.natas.labs.overthewire.org View sourcecode를 눌러서 소스코드를 확인해보자. 저번과 똑같이 passthru 함수로 다음 레벨의 비밀번호를 출력할 수 있다. 그러나 이번에는 특정문자들을 필터링하고 있다. 따라서 필터링 되지 않는 문자를 이용해서 해결해야 한다. 저번 포스팅에서 다음 레벨로 가는 비밀번호는 /etc/natas_webpass/natas10에 있었다. 따라서 natas11의 비밀번호는 /etc/natas_webpass/natas11에 있다고 유추해볼 수 있다. 그러면 해당 경로를 검색하면 natas11의 비밀번호를 알아낼 수 있을 것이다. 이를 위해 ^(틸드)문자를 사용해보려고 한다. ^는 각 행의 ..
[XSS Challenge] Stage #8
2021. 5. 8. 02:03
Study/Web Hacking
Stage #8에 입장! Stage #7과 똑같이 입력해봤다. 그랬더니 입력을 밑에 URL 링크로 만들어주는 것을 확인했다. 소스코드를 확인해보니 사용자 입력이 a태그의 href 속성값으로 사용되고 있었다. alert(document.domain);을 실행시키는 것이 목적이니 href를 alert(document.domain)로 만들기만 하면 된다. javascript:alert(document.domain) 입력하고 생성된 URL을 클릭하면 다음과 같이 alert 함수가 실행된다. Stage #8을 성공적으로 해결했다.
[XSS Challenge] Stage #7
2021. 5. 8. 01:16
Study/Web Hacking
Stage #7에 입장! Stage #6에서 입력했던 것과 같이 " onclick="alert(document.domain);을 입력해봤다. 역시 alert 함수는 실행되지 않는다. 확인해본 결과 "r가 필터링되고 있었다. 필터링을 우회할 다른 방법을 써야할 것 같다. 찾아보니 "대신 /를 사용할 수 있는 것 같았다. payload를 다시 작성하면 다음과 같이 쓸 수 있다. / onclick=alert(document.domain) 개발자도구로 확인해보니 onclick 이벤트 핸들러가 잘 적용되어 있었다. input 태그를 클릭하면 아래처럼 alert 함수가 실행된 것을 확인할 수 있다. Challenge를 성공적으로 해결했다.
[LOS] orc
2021. 5. 7. 19:32
Study/Web Hacking
orc에 접속! 소스코드를 보면 밑에서 3번째 줄에 $_GET['pw']와 $result['pw']를 직접 대조하고 있다. 둘의 값이 일치해야만 이번 문제를 해결할 수 있다. 즉, 전체 pw를 알아내야 한다. 그런데 addslashes 함수로 quotes를 필터링하고 있기 때문에 이전에 썼던 방식대로는 해결할 수 없어 보인다. 이번 문제에서 SQL Injection을 통해 얻을 수 있는 정보는 Hello admin의 출력을 통해 알 수 있는 참과 거짓밖에 없을 것 같다. 참과 거짓을 통해서 pw를 알아내려면 Blind SQL Injection 방법을 사용해야 할 것 같다. 일단 pw의 길이를 알아내야 한다. ?pw=' or length(pw)=n#을 입력하고 Hello admin이 출력될 때까지 n을 늘..
[natas] Level 8 -> Level 9
2021. 5. 7. 18:48
Study/Web Hacking
: level 8 → level 9 http://natas9.natas.labs.overthewire.org natas9에 접속한 뒤 View sourcecode를 눌러서 소스코드를 확인해봤다. 소스코드를 보니 사용자 입력을 $key에 저장하고, passthru 함수를 실행시키고 있다. 처음보는 함수가 등장해서 passthru 함수가 무엇인지 찾아봤다. 찾아본 결과 php에서 외부 명령어를 실행시킬 수 있는 함수인 것 같았다. passturh 함수의 취약점을 이용해서 원하는 명령어를 실행할 수 있다고 한다. natas10의 디렉토리나 파일을 검색해봤더니 2개의 결과가 출력됐다. 밑에 출력된 "/etc/natas_webpass/natas10"에 password가 있을 것 같다. /etc/natas_webp..
[natas] Level 7 -> Level 8
2021. 5. 7. 18:33
Study/Web Hacking
: level 7 → level 8 http://natas8.natas.labs.overthewire.org natas8은 소스코드를 볼 수 있는 링크가 있었다. 링크를 열어서 소스코드를 확인해봤다. 소스코드를 열어보니 사용자 입력을 encodeSecret 함수로 encode한 문자열이 $encodeSecret과 같으면 natas9의 password를 출력하도록 하고 있었다. encodeSecret 함수의 내용이 코드에 나와있으므로 $encodeScret에 encode 과정을 거꾸로 적용하면 natas9의 password를 알아낼 수 있다. php편집기를 통해 encode 반대의 과정을 적용시켜 문자열을 구해봤다. -> oubWYf2kBq 해당 문자열을 맨처음 페이지의 input에 입력하면 natas9의..