[LOS] vampire
2021. 6. 27. 21:12
Study/Web Hacking
vampire 입장! 이번 문제는 str_replace 함수를 이용해서 해결하는 문제다. 이 문제에서 str_replace 함수는 3번째 인자인 $_GET[id]에서 1번째 인자인 "admin"을 찾아 2번째 인자인 "" 빈 문자열로 바꿔준다. 따라서 admin사이에 admin을 넣어주면 가운데 있는 admin은 빈 문자열이 되면서 양쪽에 있는 값들이 합쳐져 admin이 만들어진다. adadminmin → admin payload는 다음과 같다. ?id=adadminmin vampire 해결!
[natas] Level 18 -> Level 19
2021. 6. 27. 19:52
Study/Web Hacking
: level 18 → level 19 http://natas19.natas.labs.overthewire.org natas19는 natas18과 소스코드는 동일하다. 단, 세션 ID의 길이가 좀 더 길어졌다고 한다. 세션 ID의 형태가 어떻게 바뀌었는지 확인하기 위해 아래처럼 3개의 세션값을 받아왔다. 3232372d61646d696e 3337382d61646d696e 3237372d61646d696e 3개의 세션값을 받아온 결과 2d61646d696e는 반복되고, 앞은 3n형식으로 이루어져 있다는 것을 알게되었다. 이 패턴을 기반으로 natas20 password를 알아내보자. 이번에도 역시 자동화프로그램을 사용해서 2d61646d696e 앞의 숫자들을 조합하여 해결했다. 자동화프로그램은 다음과 같다..
[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..