본문 바로가기

WARGAME/root-me : web-client [web]

(10)
root-me : web-client / 10) CSRF - 0 protection [write-up] 이번엔 csrf 문제! xss 문제를 풀기 전에 복습을 하고 진행 했듯이csrf 도 간단하게 복습하고 풀어보자. * CSRF : cross site requery forgery : 공격자가 다른 사용자의HTTP 요청을 위조하는 공격 : 그 예로는 이메일 전송 위조 방법이 있다. 태그 - 원래는 이미지 파일을 링크하는데 이용되지만, src 속성으로 설정되는 어떠한URI도 링크하는데 이용될 수 있다는 점에서 xss 와csrf 공격에 자주 사용. 이제 문제를 풀어보자. 개발자 도구에서 확인해본 결과 단서 같은 것은 따로 없었고, 필드에 맞추어 회원가입을 하고 로그인을 하면 이런 화면으로 바뀌게 된다. Contact 를 눌러본다. 내 이메일 주소와 첨부할 내용을 작성해서 제출하는 것 같다. Profile과 Pr..
root-me : web-client / 9) XSS - Stored 1 [write-up] 관리자 세션 쿠키를 탈취해서 문제를 해결하라고 한다. 문제를 풀기 전에 xss 를 잠깐 정리하면서 복습하고 가자. * xss : cross site scripting : 이름에서도 알 수 있듯이 scripting, 즉 자바 스크립트가 사용된다는 뜻. : 공격자가 사용자의 웹 브라우저에 악성 스크립트 코드를 주입하고, 사용자가 악성 스크립트 코드를 실행함으로써, 사용자의 정보를 악의적으로 탈취하는 공격 기법. : 공격자의 최종 목표- 자바 스크립트 코드가 일반 사용자 브라우저에서 실행되어 피해주기. * 종류3개 1) reflected (전제 조건 1. Alice 는 서버와의 통신을 통해 세션 토큰을 포함하는 쿠키를 부여 받은 상태 2. 서버에는 취약점이 존재) : Bob은 자바 스크립트 코드를 포함하는 조..
root-me : web-client / 8) Javascript - Obfuscation 3 [write-up] 가짜 password haha.. ⁉️ 우선 맨날 찾는 개발자 도구. 사용자의 입력은 pass_enc -> , 로 구분되어 tab 에 저장. pass -> ,로 구분되로 tab2에 저장. 중간 소스에서는 tab2를 가지고 작업을 수행하는 듯 하다. 따라서 내가 입력으로 어떤 것을 입력해도 딱히 상관이 없다는 뜻. 생각해보니 처음에 이런 이유로 입력 필드 alert이후 가짜 password haha 라는 문구를 띄웠던 것 같다. 출처- https://webigotr.tistory.com/95 아무튼 주목해야하는 것은 하단에 있는 16진수 값들로 보이니까 이 16진수들을 10진수로 변환한 후 string으로 변환해보자. 일일이 하기 번거롭기 때문에 소스를 짜서 해결할 수 있다. "16진수 문자열".toStr..
root-me : web-client / 7) Javascript - Native code [write-up] 강력한 한마디.. 노 단서 일단 개발자 도구를 습관적으로 연다. 아찔.. 난독화가 되어있는 듯 하다. 일부를 떼어서 구글링해본다. 문제 이름이 javascript - native code 인 점을 감안하면서 구글링 하다가 이 문자열이 난독화된 js 코드라는 것을 알게되었다. 또한 크롬 콘솔에서 끝() 을 지우고.toString()을 입력하면 복호화 시킬 수 있다고 한다. 출처- https://mandu-mandu.tistory.com/231 참고해서 사용해보니 복호화가 되어 문자열이 보였다. 정말 꿀팁인 것 같다. 🍯🍯🍯🍯 따라서 flag : toto123lol
root-me : web-client / 6) Javascript - Obfuscation 2 [write-up] 아무것도 없을 땐 개발자 도구. 이전에 풀었던 문제와 비슷한 듯 하다. 디코딩 해보자. 한번 더 숫자들을 가지고 문자로 변환하면 되는 것 같다. 아스키 코드표를 보고 문자로 변환해주면 hDufjdki156 flag 로 입력해보면, 성공! flag : hDufjdki156
root-me : web-client / 5) Javascript - Obfuscation 1 [write-up] 역시 개발자 도구를 사용한다. 두둥 if 문을 보면 pass를 unescape 해 password 입력 폼에 입력하면 된다는 것 같다. * escape() - 알파벳과 숫자 및* , @, - , _ , + , . , / 를 제외한 문자를 모두16진수 문자로 변환 unescape() - 그 역과정 출처: https://delirussum.tistory.com/16 어쨋든 온라인 디코더에 pass 를 입력해 변환해보자. password 로 보이는 문자열로 디코딩된 것 같다. 입력해보면, 이 password 를 flag 로 사용하라는 문구. flag : cpasbiendurpassword
root-me : web-client / 4) Javascript - Authentication 2 [write-up] 로그인 인증 관련 문제인 것 같다. 우리의 친구 개발자 도구 살펴보다가 별다른 힌트를 찾을 수 없어서 login.js 로 이동해보았다. TheLists는 GOD:HIDDEN. if 문에서 username 에 TheUsername 을, password 에 ThePassword 를 각각 입력하는 것을 확인, :를 구분자로 사용하여 split하기 때문에 username은 GOD, password 는 HIDDEN이 된다. 다시 문제html 로 돌아와 login 버튼을 누르고 찾은 값들을 입력하면 로그인 성공, 로그인에 사용한 password 를 flag 로 사용하면, flag : HIDDEN
root-me : web-client / 3) Javascript - Source [write-up] 역시 개발자도구를 연다. 훑어보던 중 pass == 123456azerty 발견. flag : 123456azerty