SQL injection 문제입니다.


모든 사용자 계정에 대한 엑세스를 확보하라고 합니다.


그렇다면 관리자로 로그인하라는 말일꺼라고 생각합니다.



Username: admin' or 1=1#

Password: 1

로 입력해보니 친절하게도 SQL문을 그대로 보여줍니다. 


Syntax error 난걸 보니 구문이 틀리다는건데 필터링 되는거도 없고 

주석처리한게 문제가 된거같아 바꿔보겠습니다.



'#' 대신 '--'를 사용하니 깔끔하게 성공합니다. 


오라클DB를 사용하는지 '#' 은 안먹히나보네요..


admin이라는 글자를 안쓰고 [' or 1=1-- ]을 사용해도 충분합니다.


(희한한건 '--' 을 사용하려면 뒤에 공백이나 문자를 넣어야는데 없어도 되는걸 보면 해당 문자만 들어와도 성공이라고 판단하나 봅니다..)



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level2  (0) 2018.08.25
[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24

시작과 동시에 alert창이 나오고 Password를 입력하라고 합니다.


정보가 없으니 그냥 확인을 누르면 https://www.hackthis.co.uk/levels/ 페이지로 가게 됩니다..


다시해봐도 그렇네요..



그러다가 level4에서 소스코드 보기를 했던 방법을 적용해서 url을 다음과 같이 바꾸고 

소스를 분석해보기로 했습니다.


시작하자마자 alert창이 나왔다는건 javascript로 alert구문을 썼다고 생각하여 

<script>와 alert로 검색을 해봐도 모든 페이지에 나와있는 저 <script>만 존재하고 alert문은 없습니다.



여기서 진짜 뭔지 몰라서 많이 헤맸는데 level4 소스코드와 level5의 소스코드 중 다른 부분이 있을꺼라고 생각하여 비교를 해봤습니다. 거의 모든 부분이 동일했습니다.


분명 javascript가 발생했다면 어딘가에 해당하는 구문이 적혀있어야는데 이곳에 존재하지 않는다면

다른 javascript 파일 속에 적혀있다는 생각을 했습니다.


그러던 중 맨 아래 부분의 

<script type='text/javascript' src='/files/js/min/extra_48d468a93b.js?1510507123'></script>

부분이 다른 javascript를 불러오는 구문이며 level4와 다르다는 것을 알게되었습니다.



해당 파일을 열어보고 Password를 검색해보니 맨 아래부분의 한개 발견되었고

Password로 입력하는 값은 'p' 변수로 입력되고 'd'변수 값과 동일하면 해결되는 것 같습니다.



'd' 변수 값을 알아내고자 앞의 'a' 변수부터 복사해 개발자도구로 확인해봅니다.



다음과 같이 'd' 변수를 알아낼 수 있으며 해당 문자열을 입력하면 성공하게 됩니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Crypt level1  (0) 2018.08.25
[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24

Main level5에서는 Username이라는 <select>태그와 함께


Ronald로 로그인을 하면 성공한다고 나와있습니다.


하지만 현재 <select>태그에는 Ronald가 없으니 우리는 추가를 해줘야 할 것입니다.



개발자도구를 통해서 해당 구문으로 이동하여 [Edit as HTML] 기능으로 'Ronald'를 추가해줍니다.



추가를 해주면 Username <select>태그에서 고를 수 있기고 Submit을 하면 성공합니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] SQLi level1  (0) 2018.08.24
[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24

Main level5를 클릭하시면 다음과 같은 alert창에 Password를 입력하라는 메시지가 나옵니다.


아무정보도 없으니 대충 입력하고 확인을 누릅니다.



확인을 누르시면 엎드려 있는 고양이 사진과 함께 "I has a sad"라는 문구가 나옵니다.


앞전과 마찬가지로 소스코드를 확인해 봅니다.



이번에도 소스코드에 password가 대놓고 있습니다..


다시 Main level5를 들어오셔서 alert창에 해당 문자열을 입력하면 성공하게 됩니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] javascript level5  (0) 2018.08.24
[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24

앞에 main level 문제와 마찬가지로 소스코드에서 확인 하실 수 있습니다.



소스코드를 보니 'hidden' 타입으로 passwordfile이 있다고 합니다.


../../extras/ssap.xml 파일 속에 있는거 같습니다.


../ 가 허용되는 것을 보니 파일 다운르도 취약점을 이용한 문제로 판단됩니다.


리눅스에서 .. 는 상위 디렉터리로 가는 명령으로 홈페이지를 제작할 때 ..를 허용하면 여러가지 파일들을 안전하게 보호할 수 없습니다.




'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level6  (0) 2018.08.24
[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24
[HackThis] javascript level4  (0) 2018.08.24

level 1,2와 마찬가지로 소스코드에서 확인할 수 있었습니다.


Hint를 보면 javascript로 사이트를 보호하는건 좋은 생각이 아니라고 합니다..



소스코드를 보시면 그대로 값이 들어가 있기떄문에 좋은 생각이 아니라고 했네요..


해당 값으로 인증하면 성공하게 됩니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level5  (0) 2018.08.24
[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24
[HackThis] javascript level4  (0) 2018.08.24
[HackThis] javascript level3  (0) 2018.08.23

level1과 마찬가지로 소스코드에서 찾을 수 있었습니다.


Hint에는 코앞에 있다고 나와있네요..



소스코드를 확인해 보니 Username, Password입력란 바로 위에 <span>태그로 작성되어 있습니다.


color: #000000으로 까만색으로 되어있어 배경화면이랑 겹쳐 안보이는 것이였습니다.



Main Level1의 Hint를 보시면 [Ctrl+U]를 하라고 합니다.


소스를 보라고 하는거 같네요. 




소스코드를 보면 눈에보이게 username, password를 주석으로 만들어 놓은게 보이실 겁니다.



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level4  (0) 2018.08.24
[HackThis] Main level3  (0) 2018.08.24
[HackThis] javascript level4  (0) 2018.08.24
[HackThis] javascript level3  (0) 2018.08.23
[HackThis] javascript level2  (0) 2018.08.23

Hint의 내용을 보면 찾고있던 페이지가 아니라고 합니다.


처음에 소스코드도 다 뒤져보고 무슨 힌트인지 몰라서 이것저것 하다가


URL 뒷부분의 '?input'이라는 글자가 붙어있는게 이상하다고 생각했지만 알 수 없었네요..


[Forum]의 글을 좀 봤습니다.. 


big big big hint라면서 url을 잘보라고 했습니다.. 확실히 '?input'이라는 글자가 이상합니다.


저는 소스코드를 볼 때 항상 개발자도구로 보는 습관이 있는데 여기서는 

view-source를 통해 봐야합니다.





view-source를 통해 보면 863라인부터 우리가 눈으로 보는 Password 입력란이 보입니다.


이 곳에서도 특별한건 찾지 못했고 혹시나 해서 '?input'을 지워보게 됬습니다.



'?input'을 지우고 소스코드를 확인하니 비슷한 라인의 다음과 같은 script 구문이 있었습니다.

페이지를 로드한 동시에 url의 '?input'을 붙이는 것을 확인 할 수 있습니다.


그 밑에 보시면 Password도 확인 가능하고 인증에 성공합니다... ㅜ



'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level3  (0) 2018.08.24
[HackThis] Main level1  (0) 2018.08.24
[HackThis] javascript level3  (0) 2018.08.23
[HackThis] javascript level2  (0) 2018.08.23
[HackThis] javascript level1  (0) 2018.08.23

1,2번과 동일하게 Password 입력란만 있으니 javascript 코드를 확인합니다.



Password의 입력한 값과 'thecode'라는 값이 동일하면 성공합니다.

'thecode' 변수는 'code123'이라고 초기화 되어있기 때문에 입력을 해봅니다.



분명 'code123'으로 제대로 입력했는데 성공하지 않습니다.

console창으로 가서 값이 제대로 들어가 있는지 확인합니다.


$('.level-form #pass')[0].value 는 제가 입력한 값이므로 'code123'이 제대로 들어갔는데

'thecode'를 확인해보니 다른 값이 들어가 있었습니다.


이 값으로 Password에 입력하면 성공합니다.




'WarGame > hackthis.co.uk' 카테고리의 다른 글

[HackThis] Main level1  (0) 2018.08.24
[HackThis] javascript level4  (0) 2018.08.24
[HackThis] javascript level2  (0) 2018.08.23
[HackThis] javascript level1  (0) 2018.08.23
[HackThis] basic+ level5  (0) 2018.08.23

+ Recent posts