-
0x03.10진수를 n진수로 변환하기0x.프로그래밍/Python 2017. 6. 27. 11:07
0x03.10진수를 n진수로 변환하기 http://codingdojang.com/scode/458#answer-filter-area 역시 코딩도장의 문제이다. 재귀함수를 사용하여 구현하는데 일단 T는 16진수까지의 나올수 있는 나머지의 모임이다. quotient와 remainder는 뜻 그대로 몫과 나머지를 뜻하는데, divmod 함수를 통해 몫과 나머지를 리턴받는다. 몫이 0이라는 것은 더이상 계산할 필요가 없으니 마지막 리턴을 통해 끝낸다. 만약 몫이 0이 아니라면 재귀를 통해 다시 convert 함수를 실행하고 그 당시의 나머지를 리턴한다.
-
0x02.CamelCase를 Pothole_case 로 바꾸기0x.프로그래밍/Python 2017. 6. 26. 11:34
0x02.CamelCase를 Pothole_case 로 바꾸기 CamelCase는 자바스크립트와 같은 언어에서 자주 사용하는 형태로 camelCase, pwnWiz 와 같이 두 단어를 나누어 표시하기 위해 대문자를 사용하는 것과 같은 형태를 뜻한다. Pothole case는 파이썬과 같은 언어에서 주로 사용되는데 camel_case, pwn_wiz 와 같이 두 단어를 나누어 표시하기 위해 '_' 를 사용하는 형태이다. re 라이브러리를 사용하여 isdigit(), isupper()로 구분되는 단어를 찾고 그 단어에 '_'를 추가하여 리턴시키는 함수를 다음과 같이 구현하였다. 코딩도장의 문제인데 여러가지 해법이 많은 재미있는 문제이다.
-
0x06.Python Challenge 60x.Wargame/Python Challenge 2017. 6. 26. 11:13
0x06.Python Challenge 6 문제 주소 : http://www.pythonchallenge.com/pc/def/channel.html 6번 문제를 풀어볼 시간이다. 기부에 대한 말이 나오는데 이건 논외의 문제이니 소스코드에 있는 zip파일을 다운받자. zipfile내부에는 아주 많은 파일이 있고 저번에 나왔던 문제처럼 Next Nothing is 땡떙과 같은 형태를 띄고 있다. readme.txt를 살펴보면 시작을 90052에서 해라고 해서 저번 문제와 같이 숫자로 next를 찾아보았더니 collect comments라는 문장이 나왔다. 이 문제의 핵심은 zipfile안에 숨겨져 있는 comment들을 찾아내는 것이다. zipfile을 사용해서 channel.zip을 열어오고 while문을..
-
0x02.ftz level 30x.Wargame/ftz.hackerschool 2017. 6. 23. 14:22
0x02.ftz level 3 여행을 갔다온 시점에서 세 번째 문제는 적절한 타이밍이다. 역시 언제나처럼 hint를 뜯어본다. 소스코드가 나온다. 간단히 해석해보면 다음과 같은 결과를 cmd에서 실행시킨다는 것을 알 수 있다. dig @ argv[1] version.bind chaos txt 일단 다음의 명령어를 포함하는 파일을 찾아보았더니 /bin/autodig를 찾을 수 있었다. 무작정 실행시켜보면 아래의 코드에서처럼 argc!=2의 조건식을 실행한다. 이쯤에서 궁금점이 들 수 있는데, dig는 DNS name server에 쿼리를 날리는 도구이다. 위와 같이 아무 인자를 넣어보았떠니 다음과 같은 결과물이 뜬다. 힌트를 자세히 보면 level4의 권한을 얻되, 동시에 여러 명령어를 사용하라고 한다. ..
-
0x09.정렬 알고리즘(3):퀵 정렬0x.알고리즘 2017. 6. 16. 13:35
4.퀵 정렬(Quick Sort) 위 정렬 방법은 리스트에서 기준점이 되는 데이터를 선정한 후에, 기준보다 작은 데이터들을 왼쪽으로, 큰 데이터들을 오른쪽으로 정렬해나가는 방식으로 기준점을 기준으로 정렬이 완료가 되면 기준점의 좌우로 다시 분할하여 정렬을 하는 방식이다. 위와 같은 리스트가 있다고 가정해보자. 위의 리스트에서는 arry[4]의 데이터 값은 5가 기준(pivot)점이 된다. 파란색으로 표시된 부분을 시작으로 맨 왼쪽부분은 5보다 큰 값을 가진 값이 나올때까지 한 칸씩 오른쪽으로, 맨 오른쪽부분은 작은 값이 나올때까지 한 칸씩 왼쪽으로 이동하며 값을 비교한다. 여전히 기준값을 기준으로 조건에 맞지 않기에 계속해서 이동하며 값을 비교한다. 자 array[2]의 값은 6으로 기준값보다 크고, a..
-
0x01.ftz level 20x.Wargame/ftz.hackerschool 2017. 6. 16. 12:54
0x01.ftz level 2 두 번째 문제를 시작해본다. 로그인을 해보면 level 1때와 마찬가지로 hint가 있고 열어보았더니, 텍스트 파일 편집 중 쉘의 명령을 실행시키라는 힌트를 준다. 리눅스에서 텍스트 파일 편집은 vi를 통해서 하는데 아마 vi에서 쉘의 명령을 실행시킬 수 있다는 뜻인가 보다.역시 level3의 SETUID를 가진 파일을 찾아보았더니 /usr/bin/editor라는 파일이 튀어나왔다. 열어보았더니 위와 같이 vi가 뜬다. 이제 남은 것은 쉘 명령을 실행시키는 것이다. https://www.joinc.co.kr/w/Site/Vim/Documents/Tip/ExternalCommand 구글링을 했더니 :shell 또는 :sh와 같은 명령을 이용해서 쉘 명령을 실행할 수 있다고 한..
-
0x00.ftz level 10x.Wargame/ftz.hackerschool 2017. 6. 15. 18:12
0x00.ftz level 1 오늘부터 본격적으로 워게임을 풀어보기로 마음먹었고 가장 쉽다고 알려진 해커스쿨의 ftz부터 시작해본다. ※ 한글이 깨져서 알아보기 힘든 경우 1) Putty의 경우에는 네이버 검색을 통하여 설정법을 적용하면 해결됨 2) 우분투(리눅스)의 경우 터미널 상단의 Terminal -> Set Character Encoding -> Korean(EUC-KR)로 변경하면 해결됨 level 1으로 들어가 ls로 pwd의 파일들을 검색해보니 hint라는 파일이 있어 열어보았다. level2 권한에 setuid가 걸린 파일을 찾는다. find 명령어를 사용하면 구할 수 있을 것 같다. find는 리눅스의 디렉터리 계층 구조에서 특정 파일이 어느 디렉터리에 있는지 찾아주는 리눅스 터녈 명령어..
-
0x01.파이썬으로 만드는 바운스게임 with 패들0x.프로그래밍/Python 2017. 6. 15. 13:48
0x01.파이썬으로 만드는 바운스게임 with 패들 저번에 포스팅한 바운스게임에서 패들을 더했다. 위 그림과 같이 패들을 통해 빨간공을 튕겨낼 수 있다. 빨간공이 바닥에 닿으면 움직임이 종료된다. Colored By Color Scripter™123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475from tkinter import *import randomimport time class Ball: def __init__(self, canvas, paddle, color): self.canvas=canvas s..