본문 바로가기

해킹/웹해킹

(8)
웹해킹 - SOP와 CSRF SOP SOP는 Same Origin Policy라고 하여, 동일 출처 정책이라고한다. 이건 어떤 사이트에서 또 다른 사이트의 리소스를 함부로 가져올 수 없도록 하는 것이다. SOP를 이해하기 이전에 그러면 Same Origin은 무엇일까? Same Origin을 판별하기 위해서는 scheme, port, host를 비교해봐야 한다. 예를들어, https://www.naver.com 이라는 주소가 있다고 할 때, shceme은 프로토콜인 https가 되고, port는 https 포트번호인 443번, host는 www가 된다. 그러므로, 예를 들어, 아래의 여러 개의 URI가 있다고 할 때, http://xyz.example.com/hello.php http://xyz.example.com/index/pw..
JAVA SCRIPT - Window 객체 본 포스팅은 www.tcpschool.com 에서 가져온 자료와 정보를 바탕으로 적혔음을 밝힙니다. Javascript에서 Window 객체는 DOM에서 document 객체가 해당 html문서를 가리키는 객체였던 것처럼, Window 객체는 해당 브라우저 창을 가리키는 객체이다. 그리고 자바스크립트의 모든 전역 변수와 전역 메소드가 window객체 안에 자동으로 포함된다. 그러니까 window.####는 자바스크립트내에 전역 변수 or 전역 함수인 ####로 그대로 존재한다. 다음을 보자. 심지어, DOM에서의 document객체도 전역 변수이기 때문에, window 안에 포함된다.(헉!) Location 객체 Location객체는 브라우저의 URI 링크와 관련된 일을 해주는 친구이다. 링크를 잘라주는..
[HACKCTF] - 가위바위보 사이트에 들어가면 다음과 같은 사진이 뜬다. 그 후에 가위바위보를 하는데, 별로 중요해 보이지는 않는다. 왼쪽 위에 설정을 하는 부분이 있는데, 이를 누르게 되면, 위와 같이 나온다. 사실 잘 모르겠어서 인터넷을 찾아봤는데, 여기다가 쉘을 업로드할 수 있다고 한다. 그러니까 순서대로, 1. 파일업로드 2. 업로드한 파일의 주소 찾기 3. 접근 의 3단계로 진행하면 된다. 우선 쉘을 업로드하겠다. 참고로 웹shell은 아래와 같이 구성된다. 의외로 간단하다. 맨 앞의 8byte는 png의 file signature로, png의 앞부분을 가리켜서, 위 문제에서 사진파일 검사를 우회한다. 그 후 php의 system 함수를 사용하여 웹쉘을 올릴 수 있다. 그 후에는 웹쉘에 접근하기 위해 웹쉘의 경로를 알아야 ..
[HACKCTF] Home 처음 들어가면 위와 같은 화면이 뜨게 된다. 인증되지 않은 IP주소라고 하는데, 위의 머리말에 강조가 되어 있는 것을 보면, 머리말(Header)를 뜻하는 것 같다. 그래서 HTTP 헤더 중에 IP주소를 나타내는 헤더가 있는지 알아보았다. 그러니 위와 같은 헤더가 있는 것을 확인할 수 있었다. 그래서 postman이라는 프로그램을 통해서 헤더를 변경하니 위의 사진과 같이 바뀌는 것을 알 수 있었다. 이제는 뭐가 인증되는 IP일까를 생각해봤는데, 여기 HACKCTF의 IP주소라면 되지 않을까 싶어서, nslookup을 통해 IP주소를 알아내어서, 사용했지만, 그래도 아무일도 일어나지 않았다. 그 때 혹시 loopback address인 127.0.0.1을 사용하는게 아닐까 싶어서 이를 적어봤더니, flag..
[웹해킹] HACKCTF - Input Check 처음에 문제를 켜면, 아래와 같이 나온다. 솔직히 어떻게 하는지 몰라서, 찾아봤는데, 아래 링크 참고 hackability.kr/entry/PHP-strcmp-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%B8%EC%A6%9D-%EC%9A%B0%ED%9A%8C [PHP] strcmp 취약점을 이용한 인증 우회 최조 작성: 2014-02-01 최종 수정: 2015-01-20 안녕하세요. Hackability 입니다. 이번에 작성할 내용은 PHP 에서 strcmp 취약점을 이용한 인증 우회 기법 입니다. 아래와 같이 간단히 인증을 하는 login.php 가.. hackability.kr php에서도 strcmp가 있는데, 이 ..
[웹해킹] HACKCTF - TIME WriteUp HACKCTF의 TIME을 풀어보았다. 처음엔, 60*60*24*30*2와 크거나 같고, 60*60*24*30*3과 작거나 같은, 숫자를 입력하기만 되니 쉬운거라고 생각을 하고, 60*60*24*30*2의 결과인, 5184000을 적었다. 그런데, 프로그램이 반응을 안하는 것이다. 그래서 엥 왜지 싶었는데, 잘보니, 아래에 sleep()가 있었다. 이걸 기다릴까 생각해보니, 60*60*24*30*2는 두 달이다... 그래서 알아보니, 문제는 저것이었다. (int)키워드를 통해, 형변환이 되는데, 위의 5184000을 쓸때, 그대로 적지 않고, 5.184e6으로 쓰면 이것을 int로 형변환할때, 5가 된다는 것이다... 헉! 그래서 직접해보면, 5초 기다리고 난 뒤에 flag가 출력된다..
[웹해킹] HACKCTF - Magic Number WriteUp php에서도, Javascript와 같이, ==와 ===가 구분되어 있어서, ==는 값 비교를, ===는 값과 자료형이 같은지를 비교한다고 한다. php에서는 '0e100'와 같은 구문을 e표현법이라고하여, 엄청 크거나 작은 숫자를 저렇게 표현할 수 있다고 한다. 위의 문자열 '240610708'을 md5로 해싱을 하게 되면 0E462097431906509019562988736854가 된다. 이녀석이 위의 if(md5('240610708') == sha1($input))구문에서 == 비교를 할때, php가 0E~~~를 보고, 0x10^~~인가보다 하고 판단해서, 0이된다. 그래서, 우리도 sha1로 digest 했을때, 0e~~가 되는 문자열을 찾아서 넣어주면 해싱 검사를 bypass할 수 있다. 입력하..
[웹해킹] 자바스크립트 문법 정리 본 글에서 사용한 예제나 사진은 다음 사이트에서 가져왔습니다. www.tcpschool.com/javascript/ 자바스크립트 기본 타입 자바스크립트의 기본 타입에는 다음과 같은 것들이 존재한다. 숫자 문자열 boolean undefined Symbol 객체 숫자는 모두 실수로 표현한다. undefined는 타입이 정해지지 않았음을 나타내는 타입이다. 변수의 선언 및 초기화 var hello = 'hello world!' hello = 10 dog = "멍멍" 비교 연산자 다른 산술연산자, 비트연산자 등은 전부 다른 언어와 비슷하다. 하지만 자바스크립트에는 ==와 ===라는 연산자가 있는데, 이는 타입별 변환이 비교적 자유로운 자바스크립트에서 ==는 값만이 같으면 True, ===는 값이외에도 타입도 ..