[natas] Level 17 -> Level 18
2021. 6. 27. 18:54
Study/Web Hacking
: level 17 → level 18 http://natas18.natas.labs.overthewire.org 위 사진은 natas18의 시작화면이다. 소스코드는 아래와 같다. natas18 Please login with your admin account to retrieve credentials for natas19. Username: Password: View sourcecode 소스코드를 보면 $_SESSION['admin']값이 1이어야 natas19의 password를 알아낼 수 있다. 하지만 함수 로직 상 $_SESSION['admin']값을 1로 바꾸기 어렵다. username과 password를 전송하면 createID 함수에서 1에서 640사이의 세션ID를 생성한다. 분명 admin..
[XSS Challenge] Stage #15
2021. 6. 27. 18:45
Study/Web Hacking
위 사진은 Stage #15의 화면이다. 화면에 보이는 input에 값을 입력하면 해당 내용이 document.write로 작성이 된다. document.write로 입력하면 이번 문제를 해결할 수 있다. document.write에는 \x3c를 로 해석하는 특징이 있다.해당 특성을 사용해서 payload를 작성해봤다. \x3cscript\x3ealert(document.domain);\x3c/script\x3e그러나 아무런 변화도 일어나지 않았다. 소스코드를 확인해보니 '\'문자 하나가 필터링되고 있었다. 이번엔 \를 하나 더 추가하여 작성했다. \\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e 그 결과 alert창이 제대로 실행되었다.
[LOS] troll
2021. 6. 27. 18:31
Study/Web Hacking
troll 입장! 이번 문제에서는 admin id를 획득해야 해결할 수 있는데, admin이랑 '를 필터링하고 있다. admin을 얻기 위해서는 admin 문자열을 작성해야 하는데 어떻게 해결 해야할까? 잘 생각해보면 php에서는 대/소문자를 구별하지만, DATABASE에서는 대/소문자를 구별하지 않는다.이 특성을 이용해서 admin대신 ADMIN이라고 입력하면 php필터링에는 걸리지 않지만, DATABASE에서는 admin의 정보를 구할 수 있다. 소스코드의 query부분을 보면 id= 뒷부분에 이미 싱글쿼터가 작성되어 있기 때문에 payload에 '를 넣어주지 않아도 괜찮다.따라서 payload는 다음처럼 작성할 수 있다. ?id=ADMIN 실행결과는 다음과 같다. troll 해결!
[natas] Level 16 -> Level 17
2021. 6. 27. 17:58
Study/Web Hacking
: level 16 → level 17 http://natas17.natas.labs.overthewire.org 위 사진은 natas 17의 시작화면이다. 소스코드는 아래와 같다. natas17
[natas] Level 15 -> Level 16
2021. 6. 27. 16:41
Study/Web Hacking
: level 15 → level 16 http://natas16.natas.labs.overthewire.org 위 사진은 natas 16의 시작화면이다. 제일 먼저 소스코드를 살펴보자. natas16 For security reasons, we now filter even more on certain characters Find words containing: Output:
[XSS Challenge] Stage #14
2021. 5. 30. 05:04
Study/Web Hacking
이번에도 input의 입력값이 style과 value에 적용된다. Stage #13에서 사용하지 못했던 expression을 다시 입력해봤는데 expression이 xxx로 필터링 되고 있었다. 지난번에 domain이 필터링 됐을 때 썼던 방법처럼 expression 사이에 expression을 넣을까 생각해봤지만 expression이 사라지는게 아니라 xxx로 바뀌기 때문에 해당 방법은 사용하지 못한다. expression 대신에 주석을 사용해서 필터링을 우회할 수 있을 것 같다. /**/ xss:ex/**/pression(alert(document.domain)); 하지만 이번에도 expression을 사용한 payload가 잘 실행되지 않아서 input태그에 onclick 이벤트를 삽입해서 해결했다..
[XSS Challenge] Stage #13
2021. 5. 30. 04:36
Study/Web Hacking
이번 문제는 input태그의 입력이 value뿐만 아니라 style속성에도 적용된다. (onclick 이벤트 입력함) style속성을 이용해서 해결할 수 있는 방법을 찾아보다가 expression이라는 함수를 알게 되었다. CSS의 expression 스크립트 확장 기능으로 해당 함수를 이용해서 XSS 공격을 할 수 있다고 한다. expression는 CSS에서 script를 실행할 수 있게 해주는 함수다. payload를 다음과 같이 작성했다. width: expression(alert(document.domain)); payload를 입력했으나 alert창이 뜨지 않았다. alert창이 뜨지 않는 이유를 알아내지 못해서 expression대신 onclick 이벤트를 삽입해서 해결했다. Stage #1..
[LOS] orge
2021. 5. 30. 04:09
Study/Web Hacking
orge에 입장! 이번 orge문제는 orc와 동일하게 password를 한자리씩 알아내야 한다. 다만 or와 and가 필터링되고 있기 때문에 대체 문자를 사용해야 한다. or는 ||, and는 &&를 사용하면 된다. 이때 url에서는 &기호가 인코딩 되기 때문에 %26으로 표현해야 한다. orge를 풀기위한 자동화 프로그램은 다음과 같다. (pw의 길이는 8) import requests headers = {'Cookie' : 'PHPSESSID=68cmc50ikdcoh6gn828ap1un9l;'} url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php" string = "1234567890abcdefghijklmnopq..
[natas] Level 14 -> Level 15
2021. 5. 30. 02:45
Study/Web Hacking
: level 14 → level 15 http://natas15.natas.labs.overthewire.org natas15에서도 Username을 입력받고 있다. 이번에도 소스코드를 살펴보자. natas15