분류 전체보기
-
XSS DOM Based - Filters BypassWargame/Root-me = Web - Client 2022. 11. 14. 21:38
XSS DOM Based - Filters Bypass 앞서 풀었던 문제의 형태이다. 문제 제목에서부터 filter를 우회하라고 나온다. number 값으로 필터링될 것 같은 값을 넣어보면 "+, ", ;"가 필터링 되는 것을 확인할 수 있다. "+"는 concat()으로, "는 '로 우회하면 된다. ";"는 개행문자로 우회할 수 있다. GET 방식이므로 URL에 number 값으로 "'\nalert(1)\n//"을 주면 단순히 문자열로 인식되는 것 같다. \n을 URLEncoding하면 %0a가 되는데 %0a를 사용하여 number 값을 "'%0aalert(1)%0a//"으로 주면 alert(1)이 동작하는 것을 확인할 수 있다. 그럼 이를 이용하여 사용자의 쿠키 값을 탈취하면 된다. 관리자에게 URL..
-
XSS - Stored 2Wargame/Root-me = Web - Client 2022. 11. 9. 20:29
XSS - Stored 2 문제 설명을 살펴보면 관리자 세션 쿠키를 탈취하여 관리자 구역에 접근하라 한다. 우선 Message에 스크립트 문을 입력해보면 실행되지 않는다. 아래 부분에 Message 입력값이 그대로 출력되는 것으로 보아 단순히 문자열로 받는 것 같다. 쿠키 값을 한 번 살펴보면 status 쿠키에 invite라는 값을 가지고 있다. invite를 admin으로 변경해보면 우측 상단의 Status와 아래 부분 status가 admin으로 바뀐 것을 확인할 수 있다. status 쿠키의 값을 스크립트문으로 해 보면 실행이 되지 않는다. 저 부분의 소스코드를 살펴보면 class에도 똑같이 들어가는 것을 볼 수 있다. 따라서, ">로 닫아주고 해보면 class가 닫히고 스크립트 문이 실행되게 된..
-
XSS DOM Based - IntroductionWargame/Root-me = Web - Client 2022. 11. 8. 21:55
XSS DOM Based - Introduction 0과 100사이 중 하나의 숫자를 입력한다. var random = Math.random() * (99); var number = '7'; if(random == number) { document.getElementById('state').style.color = 'green'; document.getElementById('state').innerHTML = 'You won this game but you don\'t have the flag ;)'; } else{ document.getElementById('state').style.color = 'red'; document.getElementById('state').innerText = 'Sorry,..
-
<Root-me> Local File InclusionWargame/Root-me = Web - Server 2022. 1. 18. 14:14
Local File Inclusion 각 경로에 있는 파일들을 보여준다. 문제 설명을 살펴보면 admin 구역에 접근하라고 한다. 우측 상단을 보면 "guest | admin"을 찾을 수 있는데, admin을 누르면 로그인 창이 뜬다. 문제 제목인 LFI 취약점을 이용하여 admin의 비밀번호를 찾아야 한다. sysadm, reseau, esprit 등 각 경로는 URL 쿼리의 파라미터로 결정하는 것을 확인할 수 있다. 파라미터의 값으로 상위경로를 뜻하는 "../"을 입력해보면 답으로 보이는 admin 파일을 찾을 수 있다. admin을 누르면 "File : admin"만 출력한다. 파일이 아닌 디렉터리라 열리지 않는 것 같다. 쿼리 파라미터 값을 "../admin"으로 주게되면 index.php 파일을..
-
<Root-me> Python - Server-side Template InjectionWargame/Root-me = Web - Server 2022. 1. 15. 15:12
Python - Server-side Template Injection title과 page content에 test를 입력하고 "Render your page!"를 눌러보면 문제 설명을 살펴보면 이 서비스로 웹 페이지를 만들 수 있다고 한다. 이 서비스를 이용하여 flag를 읽으라고 한다. 문제 제목에 나온 대로 SSTI 취약점을 이용하면 문제를 해결할 수 있다. page content에 {{ 7*7 }}을 입력하면 7*7이 실행되어 49가 됨을 확인할 수 있다. 이는 웹 템플릿 엔진을 사용함을 뜻한다. 웹 템플릿 엔진은 웹 템플릿과 웹 콘텐츠 정보를 처리하는 목적으로 설계된 소프트웨어를 뜻한다. 이 SSTI 취약점을 이용하여 RCE와 연계할 수 있다. RCE(Remote Code Execute)는 원..
-
<Root-me> PHP - register globalsWargame/Root-me = Web - Server 2022. 1. 14. 12:18
PHP - register globals 비밀번호를 입력할 수 있다. 문제 설명을 보면 개발자들이 종종 백업 파일을 주변에 남겨둔다고 한다. BAK 파일은 동일한 목적으로 여러 응용 프로그램에서 모두 사용되는 백업 파일이다. 대부분의 BAK 파일은 백업을 저장해야하는 프로그램에 의해 자동으로 작성된다. 따라서, ./index.php.bak을 입력하면 index.php.bak 파일을 다운로드 받을 수 있다. index.php.bak 파일을 열면
-
<Root-me> PHP - FiltersWargame/Root-me = Web - Server 2022. 1. 13. 02:57
PHP - Filters 파일을 보기 위해서는 로그인하라고 한다. login을 누르면 로그인 폼이 뜬다. 하지만 로그인에 대한 정보나 힌트를 찾을 수 없다. URL을 보면 각 페이지를 요청하기 위해 GET Method를 사용하는 것을 알 수 있다. inc의 값으로 상위 경로를 뜻하는 ../을 입력해보면 경고를 출력하는데, include()로 보아 LFI 취약점 공격을 생각할 수 있다. PHP Wrapper를 통해 소스 코드를 볼 수 있다. 가장 많이 사용되는 방법인 php://filter를 사용하여 로그인 페이지의 소스 코드를 찾아보기 위해 ?inc=php://filter/convert.base64-encode/resource=login.php를 입력하면 긴 문자열 하나가 출력된다. 이 문자열은 base..
-
<WEB Hacking> LFIWEB Hacking 2022. 1. 12. 01:47
■ LFI(Local File Inclusion) LFI 취약점이란 공격 대상 서버에 위치한 파일을 포함시켜 읽어오는 공격이다. LFI 또는 RFI(Remote File Inclusion) 취약점이 존재하는지 확인하기 위해 주로 파라미터로 ../를 입력해본다. 공격 대상 주소/test.php?parameter=../ LFI 취약점은 php 코드상에서 include() 사용 시, 입력 값에 대한 필터링이 이루어지지 않아 발생하는 취약점이다. 만약 LFI 공격이 가능하다면, 파라미터에 파일의 경로를 입력하면 파일이 실행된다. # example # input /test.php?file=../../../../../../../../etc/passwd ■ PHP Wrappers php://filter 가장 많이 사..