[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의..
[XSS Challenge] Stage #5
2021. 4. 11. 17:48
Study/Web Hacking
Stage #5 입장! Search창에 공격코드를 입력해보면 d까지밖에 입력하지 못한다. 그 이유를 소스코드에서 확인할 수 있었다. input의 maxlength가 15로 설정되어 있었다. 뒤에 0 하나를 더 붙여서 공격코드를 넉넉하게 입력할 수 있게 해줬다. 그리고 Search에서 입력한 값이 value의 값으로 들어가는 것을 확인할 수 있다. 지난 Stage에서 했던 것과 동일하게 태그를 닫고 새로 script태그를 작성하면 될 것 같다. ">
[LOS] goblin
2021. 4. 11. 17:19
Study/Web Hacking
goblin에 접속! 이번 문제는 no를 입력받아서 query에 포함시키고 있다. 이후 id가 admin일 때 goblin이 solve되고 있다. goblin을 해결하려면 id가 admin이어야 하는데 query는 이미 id='guest'가 들어있기 때문에 이부분을 무효화 시켜야 한다. id='guest'를 무효화시키려면 id='guest' and no={$_GET[no]} 이 식 전체를 거짓으로 만들면 된다. 해당 식을 거짓으로 만들기 위해 guest의 no가 갖지 않을 만한 값을 입력해봤다. Hello {$result[id]} 부분이 출력되지 않은 걸로 보아 guest의 no는 9999999999999가 아니다. 이렇게 id='guest'를 무효화시킨 후에는 id='guest' and no=99999..