전체 글
[root-me.org - Web-Client] Javascript - Obfuscation 2
[root-me.org - Web-Client] Javascript - Obfuscation 2
2020.09.14들어가자마자 그냥 흰 화면이길래 소스코드를 보았다. 주석으로 뭐 이상한 말이 적혀있고,,, pass라는 이름의 변수에 이전 단계에서 보았던 unescape 뭐시기뭐시기가 써있다. unescape 뒤에 %28%22이 있고, 그 뒤에 String.fromCharCode가 있다. %28과 %22는 각각 아스키코드로 (과 " 이다. 그럼 다시 unescape() 함수 내에 있는 문자열을 확인해보면 unescape%28%22String.fromCharCode%2528104%252C68%252C117%252C102%252C106%252C100%252C107%252C105%252C49%252C53%252C54%2529%22%29 는 아래와 같다. unescape("String.fromCharCode%2528104%2..
[root-me.org - Web-Client] Javascript - Obfuscation 1
[root-me.org - Web-Client] Javascript - Obfuscation 1
2020.09.14챌린지를 시작하자마자 비밀번호를 입력하라는 칸이 나오고 일정시간 후에 끝나버린다. 그 끝나버린 창에서 소스코드를 봐보았다. pass에 16진수(아스키코드로 추정)가 들어가있다. 그리고 사용자가 입력한 값(h)와 unescape(pass)가 같으면 풀리는 문제다. 그럼 unescape(pass) 값을 알아내보자. unescape 함수를 직접 찾아보고 결과값을 예상해보는 방법도 있겠지만, 개발자 도구의 콘솔창을 사용하면 쉽게 알아낼 수 있다. unescape() 함수 안에 문자열의 형태로 값을 넣어주면 이를 다른 값으로 디코딩 해준다. 저 값을 다시 그 비밀번호 입력창에 넣어주면...?둨흔? cpasbiendurpassword unescape() 함수는 문자열을 디코딩하는 함수였다. 위의 문제에서는 아스키코..
[root-me.org - Web-Client] Javascript - Authentication
[root-me.org - Web-Client] Javascript - Authentication
2020.09.14철새답게 여러 사이트를 돌아다니다가 root-me.org에 앉아보았다... 기본적인 로그인 화면이 뜨고 뭐 다른 보이는게 없으니 소스코드를 살펴보자. Login Username : Password : login.js에 속해있는 Login() 함수를 호출하는 버튼을 클릭하면 사용자가 입력한 pseudo(아이디)와 password(비밀번호)가 Login() 함수로 들어가는 것으로 보인다. 그럼 login.js를 살펴볼까...? /* */ 앞에서 사용자의 값을 가져오고 그걸 모두 소문자화 시킨다. 그리고 pseudo가 "4dm1n", password가 "sh.org", 이 두가지 조건을 모두 만족하면 "이 비밀번호를 정답 인증하는데 써라~_~"라는 느낌의 문장이 alert 된다. 그럼 그냥 Flag 작성칸에 ..
[기초]파이썬 문자열의 함수들
[기초]파이썬 문자열의 함수들
2020.09.05앞서 파이썬의 리스트 함수들에 대해서 정리해보았다. 이제는..! 문자열 함수들이다. 리스트와 마찬가지로 문자열도 객체(Object)이다. 따라서 문자열 안에도 다음과 같은 함수들이 존재한다. count(sub) str = "My nickname caputdraconis is the password for the Gryffindor dormitory" print( str.count("is") ) # == print(2) count(sub) 함수는 뜻 그대로 문자열에 sub이 등장하는 횟수를 반환하는 함수다. 문자열 str을 보면 알 수 있듯이 "is"가 caputdracon'is'와 be동사 'is', 이렇게 총 2번 쓰였다. 그렇기에 str.count( "is" )는 숫자 2를 반환하고 이를 print(..
[기초]파이썬 리스트의 함수들
[기초]파이썬 리스트의 함수들
2020.09.05파이썬(python) 언어에서 리스트 자료형에는 기본으로 제공하는 함수들이 있다. append, extend, clear 등등 여러 함수들을 기본적으로 제공해주어 편리하게 사용할 수 있다 append() s = [1, 2, 3] s.append(4) print(s) s.append([5,6]) print(s) append() 함수는 리스트의 끝에 주어진 데이터를 추가하는 함수다. 위의 코드를 실행하면 실행결과는 아래와 같다. [1, 2, 3, 4] [1, 2, 3, 4, [5, 6]] extend() s = [1, 2, 3] s.extend([4]) print(s) s.extend([5,6]) print(s) extend() 함수는 리스트의 끝에 인자로 주어진 리스트 내용 전부를 추가하는 함수다. 위의 ..
파이썬 난리법석 간단 정리(변수, 함수, 반복, 데이터형) - Private
파이썬 난리법석 간단 정리(변수, 함수, 반복, 데이터형) - Private
2020.09.03책을 펼쳐봤다는 것을 증명하기 위해 파이썬 책 정리를 하고자 한다. 선택한 책은 "윤성우의 열혈 파이썬 기초편" 정말 대충 정리할 예정이다. 영양가 있는 글은 다른 블로그에서 찾는 것을 추천한당. Ch1. 파이썬에게 질문하기 파이썬 설치부터 IDLE 사용 방법을 배우는 챕터다. https://python.org Welcome to Python.org The official home of the Python Programming Language www.python.org 위 링크에 들어가서 Downloads에 마우스를 올리면 위처럼 자신의 운영체제에 맞는 최신 파이썬을 바로 다운로드 받을 수 있다. 찾는 버전이 따로 있다면 왼쪽에 자신의 운영체제에 맞는 링크를 타고 들어가서 버전을 찾으면 된다잉~ 파이썬을..
[Webhacking.kr] Challenge old-33
[Webhacking.kr] Challenge old-33
2020.08.16Challenge old-33번 문제다. Challenge 33-1이라고 나와있는걸 보니 33번은 여러 작은 문제들로 이루어져 있을것 같다는 생각이 들었다. 소스코드를 살펴보자. Challenge 33-1 view-source get 이라는 이름으로 GET 방식을 이용해 "hehe"라는 값을 전해주면 된다. 주소 뒤에 ?get=hehe를 붙여 해결해보자. 활성화된 Next 버튼으로 넘어가보쟈 소스코드를 살펴보자. Challenge 33-2 view-source POST 방식으로 post라는 이름으로 "hehe", post2라는 이름으로 "hehe2"를 넘겨주면 되겠다. 버프수트를 사용할 수도 있을거 같지만 귀찮으니깐 브라우저의 개발자도구를 활용해 해결해보자 기존의 소스코드에 위의 사진처럼 form 태그를..
[LOS / LORD OF SQL INJECTION] gremlin
[LOS / LORD OF SQL INJECTION] gremlin
2020.08.16los.rubiya.kr/gate.php https://los.rubiya.kr/gate.php los.rubiya.kr LOS의 goblin 문제를 풀어보았다.
[Webhacking.kr] Challenge old-11
[Webhacking.kr] Challenge old-11
2020.08.15webhacking.kr/old.php Webhacking.kr webhacking.kr 11번 PHP 문제다. 들어오자마자 틀렸다고 하니깐 기분이 묘하네,, 소스코드를 살펴보자 view-source GET방식으로 val이라는 이름의 데이터가 전해지는데, 이 값이 $pat에 저장되는 값과 일치하면 풀리는 간단한 문제다..(전혀 간단하지 않았다씨) 일단 저 가운데에 $_SERVER[REMOTE_ADDR]은 접속자의 IP주소다. 이는 초록창에 'Ip주소 확인'이라고 검색하면 바로 알 수 있다. 그럼 저 앞과 뒤에 저 이상한건 뭘까...? 뭔가 특수기호를 팍팍 쓴걸 보니 특별한 의미가 있어보인다. 바로 그 해답은!!! 정 규 표 현 식~ http://www.nextree.co.kr/p4327/ 정규표현식(Re..
[여름방학 스터디 과제]
[여름방학 스터디 과제]
2020.08.14웹해킹 워게임 7문제 이상 풀기!~~~! 뚜둥~ 드림핵 Dreamhack(드림핵 정책에 따라 비공개처리) https://caputdraconis.tistory.com/67 DreamHack 워게임 WEB-(Tough!)Cookie https://dreamhack.io/wargame/challenges/6/comments cookie 쿠키로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. Reference Introduction.. caputdraconis.tistory.com https://caputdraconis.tistory.com/68 DreamHack 워게임 WEB-pathtraversal 문제 사이트 접속방법은 이전 단계 풀이..
[Webhacking.kr] Challenge old-10
[Webhacking.kr] Challenge old-10
2020.08.14다소 난감한 첫화면,, O | | | | Goal 흠,,,1600px에 Goal 라인이 있고 yOu가 이 라인에 서게 되면 문제가 풀리게된다. 어떻게 옮기지 고민하다가 그냥 한 번 클릭시 움직이는 정도를 1에서 1600으로 바꿨다. 이렇게 하면 한 번 클릭시 1600px을 움직이면서 골라인에 서게 되고, a태그 안에 있는 onclick 속성에 들어가있는 if 조건문이 실행되면서 풀린다!! 바로 아래와 같이! 이 상태로 한 번 클릭하면!
[Webhacking.kr] Challenge old-24
[Webhacking.kr] Challenge old-24
2020.08.14view-source 이 문제를 정확하게 이해하려면 php에 내장된 함수인 exract() 함수에 대해서 살펴볼 필요가 있다. extract는 '추출하다'라는 의미를 가진 영어단어다. 이 뜻에 맞게 어느 배열로부터 추출하면 인덱스(?)만으로 그 값에 접근할 수 있다. 직접 살펴보자. 만약 GET 방식으로 데이터를 주고받을 때 우리는 GET 방식으로 전해진 데이터에 접근하기 위해 $_GET['x'], $_GET['y']와 같이 사용한다. 여기서 만약 extract($_GET)을 앞에 적어준다면????? $_GET['x']는 $x로, $_GET['y']는 $y로 접근할 수 있다. 그럼 위의 코드에서 살펴봐보자. extract($_SERVER); extract($_COOKIE); $ip = $REMOTE_AD..