Blog Posts

공짜로 프로그래밍 공부하기 : E-Book 모음

간만에 쓰게 되는 블로그 포스팅이라 가벼운 주제를 써볼까 한다. 최근 페이스북에 최연소 입사자에 대한 인터뷰가 화제가 된 적이 있었다. 17세의 나이로 페이스북에 입사한 이 친구는 순수히 인터넷 “검색”과 공짜 프로그래밍 강의 사이트를 통해 프로그래밍을 배웠다고 한다. (물론 어린나이에 말랑말랑한 브레인도 한 몫 했을거라 생각됨 ㅎㅎ) 많이 알려져있다 시피 미국의 경우 프로그래밍의 중요성과 실효성에 대해 레전드급 인물(빌 게이츠, 마크 주커버그 등)들이 직접 나서서 홍보하고 있으며, 코드 아카데미, 칸 아카데미와 같은 사이트를 이용하면, 기본적인 프로그래밍 기술을 습득할 수 있다. https://www.codecademy.com  / https://www.khanacademy.org/computing/computer-programming 국내의 경우 “egoing – 이고잉” 님께서 운영하시는 [생활코딩 – Opentutorial] 사이트를 이용하면 한글과 유튜브 강좌를 통해 C/Java/Python과 같은 언어를 배울 수 있다.   그러나 강의 자료의 경우 정해진 커리큘럼을 따라가야 하는데 이런 부분이 좀 지루하게 느껴질 수 있고, 나의 경우 업무 때 사용하는 언어가 뒤죽박죽이다보니, 해당 언어에 관련된 책을 매번 사보기도 부담스럽다.   그러던 와중에 오늘 인터넷에서 어떤 용자가 깃허브에 공유한 Free-Programming-Books 를 우연히 보게 되었는데 내용이 정말 대박중에 대박이 아닐 수 없다. 이제는 정말 “자료가 없어서 공부 못하겠다” 는 이야기는 해서는 안되는 시대인 듯… 각각의 자료를 작성해준 전 세계의 모든 용자들에게 감사하며 아래 링크로 들어가서 신나게 E-Book을 다운받아 보자. https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md

Continue Reading

파이썬 requests 라이브러리를 활용한 웹 취약점 점검

웹 취약점 점검에 Burp-Suite와 같은 상용(혹은 free) Proxy 도구를 많이 사용하긴 하지만 특정 영역에서 취약점을 발견했을 경우 상용 도구에서 제공되는 부가기능(Intruder 등)을 쓰기 보다는 Python을 통해 직접 도구를 제작하는 것이 효율적일 때가 있다. 파이썬에서 http 통신을 위해 가장 기본적으로 사용되는 라이브러리에는 socket, urllib(2) 등이 있지만 아래 소개할 requests 를 사용하면 아주 간편하고 빠르게 공격 도구를 제작할 수 있다. 본 포스팅 내용은 아래 공식 페이지 내용을 참고하여 작성하였음을 미리 밝힌다. http://docs.python-requests.org/en/latest/   설치 방법 pip 혹은 easy_install 도구를 통해 간편하게 설치가 가능하며, git 을 통한 수동 설치도 지원한다. [crayon-597268080ff6a207354266/] 설치가 끝나면 정상적으로 라이브러리가 import 가 되는지 파이썬을 열어 확인해보자 [crayon-597268080ff7e861141176/] 오류 없이 정상적으로 설치 된 것을 확인할 수 있다. 이제 본격적으로 requests 라이브러리를 활용해보도록 하자.   GET / POST 요청(request)과 응답(response) 받기 라이브러리를 불러오는(Importing) 것은 다음 한 줄이면 충분하다. [crayon-597268080ff88018613168/] 공격 대상 웹 서비스가 GET 메서드를 지원하는 경우 다음과 같이 Request를 생성한다. [crayon-597268080ff92534642630/] url을 별도로 분리해 놓은 것은 추후에 코딩시에 유연성을 높이기 위해서이며, 직접 get(‘대상주소’) 형식으로 입력해도 무방하다. 위와 같이 get 메서드를 호출하게 되면 응답 값에 대한 객체가 “r” 에 부여되며, 앞으로도 이 객체를 사용하여 url 에 관련된 정보를 수집할 수 있다. GET 이 아닌 POST 방식의 경우 다음과 같이 파라미터를 딕셔너리 형태로 정의한 후 post 메서드 호출 시 인자값으로 전달하면 된다.

Continue Reading

리눅스 시스템 프로그래밍 [2] : 파일 입출력

이번 장에서는 리눅스 시스템 프로그래밍에 있어 가장 기초적이면서도 중요한 파일 입출력에 대해 정리하고자 한다. 모든 소스코드는 우분트 32비트 환경에서 컴파일 하였으며, 시큐리티 옵션을 따로 주지 않았다.   1. 파일 디스크립터 (File Descriptor) 리눅스에서 파일을 읽고 쓰기 위해서는 반드시 파일을 Open 해야만 한다. 파일이 오픈되고 나면 파일 디스크립터라는 일종의 Index 번호가 반환되며, 이 값은 파일을 오픈한 프로세스의  고유 번호라 생각하면 이해하기 쉬울 것이다. 파일 디스크립터는 C int 타입으로 표현되며, 최대값은 1,024이지만 1,048,576번까지 설정할 수 있다. 또한, 프로세스마다 관례적으로 0,1,2 번은 사전 배정되어 있는데 각각 번호별 의미는 다음과 같다. 0 : 표준 입력 (stdin) / 1 : 표준 출력 (stdout) / 2 : 표준 오류 (stderr) 따라서 실제 하나의 파일을 생성하게 되면 “3번” 부터 File Descriptor가 부여된다. [crayon-5972680811685263999037/] 결과 : FD Success…!!! FD is : 3   2. 파일 열기 (File Open) 리눅스 시스템에서는 파일을 읽거나 쓰기 전에,  파일에 접근하기 위한 준비 과정을 거친다. 이 때 사용되는 함수가 바로 open() 또는 creat() 함수이다. open용 함수에서는 flags를 통해 파일의 쓰임새를 정의하게 되는데 O_RDONLY, O_WRONLY, O_RDWR 중 하나를 사용해야 한다. 파일 사용이 끝나면 close()함수를 통해 파일을 닫아주어야 한다. [crayon-5972680811695486218707/] 지정한 파일명이 존재하지 않을때 생성하고 싶을 때는 O_CREAT flag를 사용한다. 새롭게 생성된 파일의 uid와 gid는 파일을 생성한 프로세스의 그것을 따라가게 된다. (매우 중요함) 파일을 생성하기 위한

Continue Reading

GEF – GDB Enhanced Features 소개

  리눅스 환경에서 순수(?) 버전의 gdb 사용은 상당한 인내를 필요로 한다. 가장 기본적인 디버거답게 여러가지 기능들을 갖추고 있지만, “보기 좋은 것까지 나한테 바라지 마라…”고 말하는 듯한 느낌이 들 때가 있다. 개인적으로 가장 gdb의 가장 불편한 점을 하나 꼽으라면 스택 정보를 볼 때, 매번 명령어를 입력해야 한다는 것이다. (물론 익숙해지면 그러려니 하고 쓰게 되지만… ㅠㅠ) 이런 단점을 해결하기 위한 사막의 오아시스 같은 툴이 등장했는데 바로 예전에 소개한 바 있는 PEDA 이다. 이전 자료 링크 :  Linux Exploit을 손쉽게 – peda 디버거 활용 [이 좋은 걸 만들어 준 Long(?) 씨에게 다시 한번 감사를] 그러나 PEDA는 Intel CPU 기반의 32/64비트 환경만 지원하기 때문에 ARM, SPARC 등의 시스템에서는 사용이 불가하다. 이번에 소개할 GEF – GDB Enhanced Features는 이러한 문제점을 단번에 해결해 줄 수 있다. ARM, PowerPC, SPARC 등의 시스템을 모조리 지원하는 GDB 확장 도구 GEF를 만나보자.   1. 설치 – Installation 설치 과정은 PEDA와 마찬가지로 매우 간단하다.  다음 3줄이면 설치 후 바로 사용이 가능하다. [crayon-597268081285e705643276/] 위 기본 사항만으로도 대부분의 기능을 사용할 수 있지만, ROP공격이나, 디스어셈블 기능을 강화하기 위해 다음 두가지 모듈을 추가로 설치할 것을 권장한다.   1) Capstone Disassembly 프레임워크로써, 다양한 아키텍쳐 환경을 지원한다. github (https://github.com/aquynh/capstone)를 통해 다운로드 받거나, pip 를 통해 바로 설치가 가능하다. [crayon-597268081286c912846602/]   2) ROPGadget ROP 공격시 코드 내에서 ROP 조각들을

Continue Reading

Site Footer

Sliding Sidebar

About Me

About Me

June Park