일주일도 훨씬 지나서 후기를 씁니다.... 작년에는 커플이라 노느라고 거의 못했지만 올해는 솔로(슬픔ㅜ)라서 풀로 참여한 대회였습니다.

 

근데 뭐이리 문제가 어렵지요???;;;; 애초에 웹만 풀어보자 생각하고 웹문제만 봤습니다. 하지만 정말 어렵더라구요... 제 실력이 아직 정말 많이 부족하다는 것을 깨달았습니다. 웹 두문제만 보고 풀지도 못한채 시간이 모두 소모되었더라구요 ;;;

 

그래도 좋은 경험 했고, 좌절 끝에 목표가 더 확실해 진것 같습니다.

 

다음 대회는 codegate...(하필...) 그래도 열심히 준비해서 한문제라도 꼭 풀수 있도록 앞으로도 노력 해야될거 같네요.

'CTF 후기' 카테고리의 다른 글

2017 HDCON 예선 후기  (0) 2017.09.18
X3XOR CTF 후기  (0) 2017.07.31
Secuinside CTF 2017 후기  (0) 2017.07.03
블로그 이미지

꼴통보안인

,

주석 (comment) : 주석은 소스코드를 설명하기 위해 사용한다. 한줄은 //, 여러줄은 /* */ 을 사용한다.

 

예시

var a=1;    // a라는 변수는 1이다.

 

var b=2;

/*

b라는 변수는 2다.

*/

 

숫자 : 자바스크립트에선 큰따옴표("")나 작은따옴표('')가 붙지않은 숫자는 숫자로 인식한다.

 

예시

alert(1+1);                                      alert("1+1");

 

            

 

첫번째 예시는 alert함수 안의 1+1을 숫자로 인식했기 때문에 2가 출력되지만 두번째 예시는 1+1을 문자로 인식했기 때문에 1+1로 출력된다.

 

  - Math.pow() : 제곱
    예시
    * Math.pow(3,2); // 결과 = 9

 

  - Math.round() : 반올림
    예시
    * Math.round(10.6);  // 결과 = 11

 

  - Math.ceil() : 올림
    예시
    * Math.ceil(10.2);  // 결과 = 11

 

  - Math.floor() : 내림
    예시
    * Math.floor(10.2);  // 결과 = 10

 

  - Math.sqrt() : 제곱근
    예시
    * Math.sqrt(9);  // 결과 = 3

 

  - Math.random() : 1보다 작은 랜덤수 출력
    예시
    * Math.random();  // 결과 = 1보다 작은 랜덤값

 

문자/문자열 : 큰따옴표나 작은따옴표 중의 하나로 감싸야한다. 문자는 character, 문자열은 String이라 한다.
예시
  - alert("coding everybody");
  - alert('coding everybody');
  - alert("kim's school");
  - alert('kim"s school');
  - alert('kim\'s school');
  - alert("kim\"s school");

 

참고 : \뒤에 있는 '(작은따옴표)나 "(큰따옴표)를 문자로 해석한다.

 

문자 연산
예시
  - alert("coding"+"everybody");
  - alert("coding".length);  // length : 문자열 길이를 반환. 결과 = 6

'Programming > Javascript' 카테고리의 다른 글

함수  (0) 2018.01.02
반복문(while, for)  (0) 2018.01.02
조건문(if, else, elseif), 논리연산자  (0) 2018.01.02
변수, 연산자, 비교연산자  (0) 2018.01.02
Javascript란?  (0) 2017.12.29
블로그 이미지

꼴통보안인

,

Javascript(자바스크립트)동적으로 컨텐츠를 바꾸고, 멀티미디어를 다루고, 움직이는 이미지등 웹 페이지를 꾸며주도록 하는 프로그래밍 언어이다. 물론, 전부는 아니지만 몇 줄만의 자바스크립트 코드만으로 꽤나 훌륭한 작품을 만들 수 있다.

자바 스크립트는 client side script 언어다.

 

1. 메모장으로 코드 작성 후 저장시 인코딩을 유니코드로 지정하여 저장해야 한다.

 

 

2. 개발자 도구의 콘솔창을 사용한다.

 

 

3. 컴파일러를 이용한다. 아래 사진은 컴파일러 종류 중에 하나인 sublime text다.

 

'Programming > Javascript' 카테고리의 다른 글

함수  (0) 2018.01.02
반복문(while, for)  (0) 2018.01.02
조건문(if, else, elseif), 논리연산자  (0) 2018.01.02
변수, 연산자, 비교연산자  (0) 2018.01.02
주석, 숫자, 문자/문자열, 문자 연산  (0) 2017.12.29
블로그 이미지

꼴통보안인

,

선착순으로 11장 뿌릴게요.

 

다만 비밀댓글이 아닌 공개 댓글로 메일주소 써주세요.

'방명록' 카테고리의 다른 글

티스토리 초대장 드려요 (4차)  (20) 2018.03.06
티스토리 초대장 드려요 (3차)  (28) 2018.02.14
티스토리 초대장 드려요  (18) 2017.12.22
블로그 이미지

꼴통보안인

,

위치 지정

  - ^ : 맨 처음을 지정.

  - $ : 맨 끝을 지정.

    * 예시
      ~ who is who
         ^who면 앞에 who, who$면 뒤에 who가 선택됨.

      ~ $12$\-\$25$
         ^$면 아무것도 선택되지 않음. \$면 $ 모두가 선택됨. ^\$는 맨 앞의 $만 선택됨. \$$는 맨 뒤의 $만 선택됨. \\는 \모두가 선택됨.

 

  - . : 모든 문자선택. *와 비슷함.
    * 예시
      ~ Regular expressions are powerful!!!
         .은 모두 첫글자 R을 시작으로 모두 선택됨. ......는 Regula를 시작으로 6글자로 쪼개서 선택됨(Regular Explressions are powerf).

      ~ O.K.
        .은 모든 글자가 선택됨. \.은 모든 .이 선택됨. \..\.은 .K.만 선택됨.

 

범위 지정

  - [] : 범위를 지정할때 사용.
    * 예시
      ~ How do you do?
         [oyu]는 문장에 포함된 모든 o, y, u가 선택됨. [dH].은 H와 d와 그 뒤의 한글자만 선택됨. [owy][yow]는 owy중 하나, yow 중 하나가 결합된 글자가 선택됨.

      ~ ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
[C-K]는 C부터 K까지 선택됨. [CDEFGHIJK] C부터 K까지 선택됨. [a-d]는 a부터 d까지 선택됨.[2-6]은 2에서 6까지 선택됨. [C-Ka-d2-6]은 C-K, a-d, 2-6까지 선택됨.

[^CDghi45]는 CD,ghi,45를 제외하고 나머지가 선택됨(^는 부정). [^W-Z]는 W-Z를 제외하고 나머지가 선택됨.

 

  -  | : or와 같습니다.
    * 예시
      ~ MondayTuesdayFriday
        (on|ues|rida)는 on,ues,rida만 선택됨. (Mon|Tues|Fri)day는 모두 선택됨. ..(id|esd|nd)ay는 모두 선택됨(..으로 id,esd,nd앞에 두글자를 선택하고 뒤에 ay까지 선택함).

 

수량자
  - * : *앞에 등장하는 글자가 0개 이상 있는 것을 선택.
    * 예시
      ~ aabc abc bc
          a*b는 aab, ab, b가 선택됨(b앞에 a가 두개 있고, 하나있고 없는 b가 선택되기 때문)
    * 예시
      ~ -@***--"*"--***-@-
        .*는 모두 선택됨. -A*-는 "*"을 감싸는 --만 선택됨. [-@]*는 -@-와 "*"을 감싸는 --만 선택됨.

 

  - + : +앞에 등장하는 글자가 1개 이상 있는 것들을 선택
    * 예시
      ~ aabc abc bc
a+b는 aab, ab가 선택됨(b앞에 a가 두개 있고, 하나있는 b가 선택되기 때문)
    * 예시
      ~ -@@@-***--"*"--***-@@@-
         \*+는 *만 선택됨. -@+--는 -@@@-만 선택됨. [^ ]+는 모두 선택됨(^ 대괄호로 가면 부정으로 됨).

 

  - ? : ? 앞에 등장하는 글자가 하나이거나 없는것만 선택
    * 예시

      ~ aabc abc bc
         a+b는 ab, ab, b가 선택됨(b앞에 a가 두개 있지만 하나만 선택되고, 하나있는 a와 a가 없는 상태로 선택되기 때문)
    * 예시
      ~ --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-
         -X?XX?X는 -XX만 선택됨. -@?@?@-는 맨 앞에 -와 -@-, -@@-, -@@@-, -

@@만 선택됨.

 

  - {} : 수량 계산
    * 예시
      ~ One Ring to bring them all and in the darkness bind them
         .{5}는 5글자씩 선택하기 때문에 뒤에 m을 제외하고 모두 선택함. [els]{1,3}은 e,l,s가 하나이상 3개 이하인 경우만 선택됨. [a-z]{3,}는 a-z로 시작하는 3글자 이상만 선택됨. r.*는 r뒤의 모든 글자가 선택됨. r.*?는 r만 선택됨. r.+는 r뒤의 모든 글자를 선택함. r.+?는 r뒤의 한글자까지만 선택됨. r.?는 r뒤에 한글자까지만 선택됨. r.??은 r만 선택됨.

 

참고 : *는 {0,}, +는 {1,}, ?는 {1,0}과 같다. * 뒤에 ?가 쓰이면 0개로 의미가 바뀜. +뒤에 ?가 쓰이면 1개로 의미가 바뀜. ?뒤에 ?가 쓰이면 0개로 의미가 바뀜.

 

경계
  - \w : word(문자)라는 의미로 알파벳과 __을 선택
    * 예시
      ~ A1 B2 c3 d__4 e:5 ffGG77--__--
         \w는 :, --를 제외하고 모두 선택됨. \w*는 :,--를 제외하고 모두 선택됨. [a-z]\w*는 a~z까지의 문자와 뒤에 문자가 올수도 안올수 있기 때문에 c3, d__4, e, ffGG77만 선택됨. \w{5}는 문자 5개만 선택되므로 ffGG7만 선택됨. [A-z0-9__]는 A1, B2, c3, d__4, e, 5, ffGG77, __만 선택됨.

 

  -  \W : \w와 반대
    * 예시

      ~ AS __34:AS11.23 @#$%12^*
         \W는 문자가 아닌 특수 문자들만 선택됨. \w는 문자만 선택됨. [^A-z0-9__]는 ^를 제외한 특수문자만 선택됨.

 

  - \d : degit의 약자. 0~9까지만 선택
    * 예시
      ~ Page 123; published: 1234 id=12#24@112
         \d는 숫자만 선택됨. [0-9]도 숫자만 선택됨.

 

  -  \D : \d의 반대
    * 예시
      ~ Page 123; published: 1234 id=12#24@112
         \D는 숫자 외의 나머지만 선택됨.

 

  -  \b : 단어 식별용
    * 예시
      ~ Ere iron was found or tree was hewn, When young was mountain under moon;
      ~ Ere ring was made, or wrought was woe, It walked the forests long ago.
         \b\w는 각 단어의 첫글자만 선택됨. \w\b는 각 단어의 마지막 글자만 선택됨.

    * 예시
      ~ cat concat
         \b\cat는 앞의 cat만 선택됨. cat\b는 앞과 뒤의 cat이 모두 선택됨.

 

  -  \B : \b의 반대
    * 예시
      ~ cat concat
         \B.은 앞의 c를 제외한 글자만 선택됨.

 

  - \A : 첫 글자를 선택함. \A는 멀티라인 설정을 해도 첫 문장의 첫 글자를 선택하지만 ^는 멀티라인 설정 해놓으면 모든 줄의 첫글자를 선택함.

  -  \Z : 마지막 글자를 선택함. \Z는 멀티라인 설정을 해도 마지막 문장의 마지막 글자를 선택하지만 ^는 멀티라인 설정 해놓으면 모든 줄의 마지막 글자를 선택함.

참고 (?=pattern) : pattern을 제외한 나머지 선택. 

    * 예시
      ~ AAAX---aaax---111
         \w+(?=X)는 X가 포함된 문자 중 X를 제외한 문자를 선택하기 때문에 AAA만 선택됨. \w+는 모든 문자가 선택됨. \w+(?=\w)는 AAA, aaa, 111만 선택됨.

 

 

 

 

참고 : http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents

'Programming > 정규표현식' 카테고리의 다른 글

정규표현식  (0) 2017.12.22
블로그 이미지

꼴통보안인

,

정규표현식은 문자열에서 특정한 문자를 찾아내는 도구로써, 수십줄이 필요한 작업을 한줄로 끝낼 수 있다.

  - 정규표현식 생성 : 컴파일, 실행 두단계로 이뤄진다.

    * 컴파일 : 검출하고자 하는 패턴을 만드는일. 보통 리터럴과 객체생성자로 생성한다.
    * 정규표현식 리터럴

      예시

        ~ var pattern = /a/;

    * 정규표현식 객체 생성자

      예시

        ~ var pattern = new RegExp('a');

 

  - 정규표현식 메소드 실행

    * RegExp.exec() : 정규표현식에 해당하는 결과가 있으면 결과값 출력하고, 없으면 null을 return한다.
     예시
        ~ console.log(pattern.exec('abcdef'));  // 결과 : ["a"]
        ~ console.log(pattern.exec('bcdefg'));  // 결과 : null

 


    * RegExp.test() : 정규표현식에 해당하는 결과가 있으면 true를, 없으면 false를 return한다.
      예시
        ~ console.log(pattern.test('abcdef'));  // 결과 : true
        ~ console.log(pattern.test('bcdefg'));  // 결과 : false

 

 

  - 문자열 메소드 실행

    * String.match() : RegExp.exec()와 비슷

       예시

        ~ console.log('abcdef'.match(pattern));  // 결과 : ["a"]
        ~ console.log('bcdefg'.match(pattern));  // 결과 : null

 

 


    * String.replace() :  패턴으로 검색해서 변경한 후 변경된 값을 리턴
       예시

        ~ console.log('abcdef'.replace(pattern,'A'));  // 결과 : Abcdef

 

 

  - 옵션

    * i : i를 붙이면 대소문자를 구분하지 않는다.

      예시

        ~ var xi = /a/;
           console.log("Abcde".match(xi));  // 결과 : null
        ~ var oi = /a/i;
           console.log("Abcde".match(oi));  // 결과 : ["A"]

 

 

    * g : g를 붙이면 검색된 모든 결과를 리턴

      예시

        ~ var xg = /a/;
           console.log("abcdea".match(xg));  // 결과 : ["a"]

        ~ var og = /a/g
           console.log("abcdea".match(og));  // 결과 : ["a", "a"]

 

 

  - 캡처 : 괄호안의 패턴은 마치 변수처럼 재사용할 수 있다. 이때 $기호를 사용한다.

    예시

      * var pattern = /(\w+)\s(\w+)/;
        var str = "coding everybody";
        var result = str.replace(pattern, "$2, $1");
        console.log(result);  // 결과 : everybody, console

 

 

pattern에서 /(\w+)\s(\w+)/;를 이용해서 패턴을 작성했다. 앞 뒤로 단어가 있는 패턴을 찾는 정규표현식이다. 그리고 str 변수에 coding everybody 문장을 넣고 result 변수에 replace 함수를 이용하여 coding을 $1, everybody가 $2인 coding everybody 문장의 단어 순서를 바꾸고 ,를 넣었다. 바꿔서 출력한 결과 everybody, coding이 출력되었다.

 

  - 치환 : 패턴을 이용하여 변수 내용을 바꾼다.

    예시

      * var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
        var content = '네이버 : https://www.naver.com 입니다. 다음 :

        https://www.daum.net 입니다. ';
        var result = content.replace(urlPattern, function(url){
            return '<a href="'+url+'">'+url+'</a>';
        });
        console.log(result);

 

urlPattern 변수에 url을 찾는 정규표현식을 넣었다. 그리고 content에 네이버와 다음을 알려주는 url을 넣었다. 마지막으로 result에 replace 함수를 이용하여 url들(https//www.naver.com, https://www.daum.net)를 찾아서 기존 url에 <a href="url">url</a>을 추가하여 리턴한다. 그러므로 result 변수에 네이버 : <a href="https://www.naver.com">https://www.naver.com</a> 입니다. 다음 : <a href="https://www.daum.net">https://www.daum.net</a> 입니다. 가 저장되어 출력된다.

'Programming > 정규표현식' 카테고리의 다른 글

정규표현식 패턴들  (0) 2017.12.22
블로그 이미지

꼴통보안인

,

초대장 선착순으로 6명 드립니다. 댓글에 메일주소 써서 달아주세요.

'방명록' 카테고리의 다른 글

티스토리 초대장 드려요 (4차)  (20) 2018.03.06
티스토리 초대장 드려요 (3차)  (28) 2018.02.14
티스토리 초대장 드려요(2차)  (23) 2017.12.28
블로그 이미지

꼴통보안인

,

해당 취약점은 os의 command를 이용하여 공격하는 방식이다. 취약점 화면을 확인한다.

 

 

dns lookup을 실행해주는것 같다. lookup 버튼을 눌러서 확인해 본다.

 

실행 결과 www.nsa.gov의 dns 정보가 출력된다. lookup 버튼을 누르면 "dnslookup 텍스트박스" 이런식의 명령어가 실행되는 것 같다. 그래서 www.nsa.gov 뒤에 ; ls -al 명령어를 넣어 우회를 시도했다.

 

 

시도한 결과 위 그림과 같이 dnslookup 명령어와 함께 ls -al 명령어도 같이 실행되었다.

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] SSI(Server Side Includes) Injection  (0) 2017.12.19
[LOW] PHP Code Injection  (0) 2017.12.19
[LOW] HTML Injection - Stored (Blog)  (0) 2017.12.12
[LOW] HTML Injection - Reflected (URL)  (4) 2017.12.12
[LOW] HTML Injection - Reflected(POST)  (6) 2017.12.12
블로그 이미지

꼴통보안인

,

해당 취약점은 위 PHP 코드 인젝션과 같이 SSI 구문을 넣어서 취약점을 도출해 내는 방식인것 같다. SSI(Server Side Includes)는 서버가 HTML 파일을 사용자에게 보내기 직전에 포함할 수 있는 변수값을 치환하는 것이다. 우선 취약점을 확인한다.

 

 

이름을 입력하면 자신의 아이피를 보여주는 것 같다. 직접 입력하여 확인해봤다.

 

 

실제로 입력한 이름과 자신의 IP를 알려준다. 여기에 first name에 <!--#exec cmd="ls -al" -->를 입력하고 last name에는 1을 입력하여 출력되는 화면을 확인했다.

 

 

입력 결과 ls -al 명령어가 ssi 구문에 의해 실행되었다.

'Web Hacking > bWAPP' 카테고리의 다른 글

[LOW] OS Command Injection  (0) 2017.12.19
[LOW] PHP Code Injection  (0) 2017.12.19
[LOW] HTML Injection - Stored (Blog)  (0) 2017.12.12
[LOW] HTML Injection - Reflected (URL)  (4) 2017.12.12
[LOW] HTML Injection - Reflected(POST)  (6) 2017.12.12
블로그 이미지

꼴통보안인

,

해당 취약점은 php코드를 이용하여 서버의 정보를 알아내는 취약점이다. 우선 어떤식의 문제인지 확인한다.

 

위와 같이 해당 페이지는 테스트페이지일 뿐이라는 문구와 함께 message 글자를 누를 수 있게 되어있다. 한번 눌러봤다.

 

 

위 그림과 같이 주소창에는 ?message=test라는 파라미터 값이 나왔고 화면에는 test라는 글이 나왔다. message라는 파라미터 값에 test를 입력하면 test가 출력되는 방식인 듯 했다. 그래서 message파라미터의 값을 test가 아닌 php 함수를 이용하여 system("ls -al")로 바꿔서 실행했다.

 

 

system 함수 사용 결과 위와 같이 system 함수 내에 작성한 ls -al 명령어가 동작하여 출력되었다.

블로그 이미지

꼴통보안인

,