일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Linux
- overthewire
- Fortran 90
- JavaScript
- 카이사르 암호
- 비즈네르 암호
- Pigpen Cipher
- Masonic Cipher
- Python
- Caesar Cipher
- webhacking
- AVR
- cookie
- 시저 암호
- reversing
- sql injection
- Mail Header injection
- vigenere cipher
- base16
- base32
- php_extract
- sha1
- Navajo alphabet
- assembly
- Web Hacking
- Javscript
- aslr
- Qrcode
- BASE64
- burpsuit
- Today
- Total
목록writeup (51)
My Drive
1. -(dash)들어간 파일명 다루기ex) cat ./- 2. find 명령에서 size 다루기* 사이즈 단위 - b : 블록단위- c : byte- k : kbyte- w : 2byte 워드ex) find -size 1033c 3. sort 명령으로 파일 정렬ex) sort data.txt 4. uniq 명령으로 중복된 열 삭제* 옵션-d : 중복되어 나오는 라인 중 한 열만 출력-D : 중복되는 모든 열을 출력-u : 중복 열이 없는 것만 출력ex) uniq -u 5. 압축파일 magic값1f 8b : gz42 5a 68 (BZh) : bz2 6. ssh -i 옵션[-i identity_file]ex) ssh bandit14@localhost -Q ./sshkey.private* identity_f..
# 열한 번째 문제 소스를 봐도 딱히 힌트가 없고, odd even이라고만 되어있다. 그림을 자세히 보면 아래와 같이 한픽셀씩 건너 검은색으로 되어있다. odd와 even은 짝수와 홀수로 픽셀을 나누라는 의미로 해석되었고, 이를 위해 아래와 같이 코드를 작성해보았다. # pc11 import Image im = Image.open('cave.jpg') odd = Image.new('RGB', (320, 240), 'white') even = Image.new('RGB', (320, 240), 'white') pix = im.load() size = im.size print size x = size[0] y = size[1] for i in range(0, x) : for j in range(0, y/2)..
# 열 번째 문제a[30]의 길이는? a가 뭔가하고 소스를 보니 전에 꿀벌 문제처럼 그림에 링크가 걸려있었다.굳이 그림을 클릭안해도 소스를 통해서 들어갈 수 있으므로 바로 들어가 보았다. a의 정체가 등장한다.자세히 보니 아는 사람들은 쉽고 모르는 사람은 이게 뭐지 할거 같다.다행히도 나는 알고 있는 쪽에 속했다. ㅎㅎ베르나르베르베르의 소설 에 나오는 개미 수열이다. 이런 규칙이 있다.규칙을 표현하는 방법은 많겠지만 나는 아래와 같이 프로그래밍하였다. # pc10 a = ['1'] for i in range(31) : ele = a[i][::-1] num = ele[0] cnt = 1 next = '' if len(a[i]) > 1 : for j in range(1, len(a[i])) : if num ..
# 아홉 번째 문제점을 연결해라. 그림에 있는 점을 연결하는 건가 하고 소스를 보았다. 좌표로 보이는 것들이 길게 나와있었는데 위 그림에서 나타난 점의 좌표인지는 알 수 없었다.우선 x,y로 생각하고 서로 연결해보았다. 코드는 아래와 같이 짰다.(first와 second에 최대값이 500이 안되서 크기는 500,500으로 잡고 시작했다.) # pc9 import Image, ImageDraw first = [146,399,163,403,170,393,169,391,166,386,170,381,170,371,170,355,169,346,167,335,170,329,170,320,170,310,171,301,173,290,178,289,182,287,188,286,190,286,192,291,194,296,..
# 여덟 번째 문제 소스를 보니 처음보는 html 태그가 있었다. 찾아보니 하나의 이미지에 여러 링크를 걸 때 사용하는 이미지맵이었다. 태그를 이용해 이미지맵을 만들고, 태그의 shape속성으로 이미지맵의 형태를 지정, rect, circle, poly,.... 그리고 coords속성으로 좌표갑을 지정한다. 참고 : http://www.homejjang.com/05/imagemap.php 링크가 걸려 있는부분은 벌이 있는 부분이었다. 클릭하니 아래와 같이 인증을 요구하는 창이 떴고, 위에서 주석으로 un과 pw는 username과 password의 줄임말임을 알 수 있었다. un: 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah..
# 일곱 번째 문제이 문제는 예전에 http://xcz.kr/ 에서 본 적이 있는 문제이다. 한칸한칸 rgb값을 이용해서 문자를 만드는 문제 였는데 이전에는 길이가 짧기도 했고, python을 이용해서 할 수 있는지 모르고 직접 손으로 풀었었던 기억이 있다. pythonchallenge 문제이니 python에 이런 기능을 해주는 모듈이 존재하는 것 같다. 이미지의 픽셀을 읽는 방법을 찾아보니, PIL(Python Image Library) 이라는 것이 존재했다.아래 사이트에서 다운받을 수 있다.http://www.pythonware.com/products/pil/이 라이브러리를 이용하여 rgb값을 읽어 올 수 있는 것을 알았고, 이제 나한테 필요한 값이 어떤 규칙을 가지고 있는지 찾아보았다. 이미지 파일..
# 여섯 번째 문제마찬가지로 사진만 있어서 소스를 보았다. 아래 주석에는 별다른 이야기가 없고, 눈에 띄는 단어는 zip이라는 주석이다. 혹시나해서 url을 .zip으로 바꿔보니 아래와 같이 파일을 다운받을 수 있었다.http://www.pythonchallenge.com/pc/def/channel.zip 910개의 텍스트 파일이 압축되어있엇다. readme.txt라는 파일이 아래은 아래와 같은 내용을 담고 있었고, 909개의 파일은 모두 지난 4번 문제와 비슷하게 이루어져 있었다.(Next nothing is ______)시작 숫자는 90052이다. 처음에는 뭣도 모르고 우선 압축을 푼 후 아래와 같이 쉽게 코드를 짤 수 있었다. # pc6 path = "./channel/" num = 90052 fo..
# 다섯 번째 문제발음해라? 소스를 보니 아래와 같았다.peak hell과 비슷한 소리? 우선 banner.p를 들어가 보니 아래와 같았다.아, peak hell은 피클(pickle)이라는 힌트를 주려는 것 같다. python에 pickle이라는 모듈이 있고, 아래는 자료를 pickle을 이용해 dump했을 때 파일에 써지는 형태이다(S, p1, p2 같은 것들이 보이면.... ) 파일을 읽어서 처리해야 할 듯 하므로 파일로 저장해준다. pickle모듈은 간단히 아래와 같이 사용한다. 자료를 파일에 쓸때는 dump, 파일을 자료로 쓸때는 load를 사용. # pc5 import pickle f = open('pc5.txt') load = pickle.load(f) print load 결과는 아래와 같이 ..
# 네 번째 문제 아무런 설명 없이 그림만 딸랑 있다. 그림에 링크가 걸려있어 클릭해보니 아래와 같은 창이 뜬다. url을 보니 뒤에 nothing=12345라는게 붙어있고, 다음 nothing는 44827이라고 한다. 다시 전 페이지로 돌아와 소스를 보니 힌트가 주어져 있다. urllib를 사용하고, 400번 안에는 끝날거라고 한다. 아마 저 숫자를 몇 백 페이지 동안 넘겨야 하는 듯 싶다. 그렇다면 http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345 페이지에 접속해 내용을 읽은 후 숫자를 얻어와서 nothing를 바꾼 페이지에 다시 접속, 이를 반복해면 될 듯 하다. # pc4 import urllib url = "http://www..
# 세 번째 문제작은 문자 하나가 각 사이드에 3개의 큰 보디가드로 둘러쌓여있다? 우선 소스를 보았다.아, 양쪽이 대문자 3개씩으로 둘러쌓여있는 소문자를 찾으면 될 것 같다. 마찬가지로 길기때문에 파일에 저장시켰다. 파일을 한 줄 씩 읽어서 확인하면 다음줄과 이어지는 끝부분을 처리하기 힘들 것 같아서한번에 읽은 후 엔터를 없애 한줄의 문자열로 만들어 주었다.그리고 소문자를 찾아 앞에 3개가 대문자이고, 뒤에 3개가 대문자인지, 또 앞뒤로 4번째는 대문자가 아닌지 확인하는 코드를 아래와 같이 작성하였다. #pc3 import string f = open('pc3.txt', 'r') r = "" while 1: line = f.readline() if not line: break else: r += line..