System

    OSINT 보안 검색 서비스와 Shodan

    OSINT 검색 서비스란 OSINT는 Open-Source Intelligence의 약어로, 오픈 검색 서비스라고도 한다. 네이버나 구글 검색 서비스 등을 생각하면 이해하기 쉬울 것이다. 누구나 공유할 수 있는 소스(publicly available sources)를 수집한다는 특징이 있는데, 보안적인 관점에서 이 OSINT 서비스를 활용하여 모의해킹 취약점 분석 등을 할 수 있다. 단, 오픈 소스 소프트웨어나 공공 정보와는 관련이 없다. Shodan Shodan Search engine of Internet-connected devices. Create a free account to get started. www.shodan.io 모의해킹의 세계에서는 Shodan이라는 서비스가 취약점 탐지에 자주 사..

    Python 이미지 파일 해킹하기

    ※ 본 포스팅은 (조성문 정영훈 저) 를 기반으로 작성되었습니다. 개요 (출처: 네이버 웹툰 ) Python은 무시무시한 확장성을 자랑하는 언어이다. 파일을 다루는 방면에서도 아주 강력한 기능을 지원하는데, 바이너리 파일을 열어서 손쉽게 그 내용을 변경하거나 추가할 수 있다. 웹에서 사용하는 다양한 형식의 이미지 파일에 스크립트를 추가하면 강력한 기능을 가진 해킹 도구를 만들 수 있다. 이번 포스팅에서는 비트맵 파일(.bmp) 에 JavaScript를 삽입해서 쿠키를 저장하고 다시 읽어들이는 간단한 코드를 작성하고, 직접 실습해볼 것이다. 이미지 파일 열어보기 일단 이미지 파일이 있어야 해킹할 거리가 생긴다. 글쓴이는 그림판에서 1x1 픽셀 크기의 작은 점 하나만 있는 이미지 파일을 만들어서 dot.bm..

    8. 지정한 위치 읽고 쓰기 - pread(), pwrite()

    개요 지난번 게시글에서는 lseek()를 통해 파일 오프셋을 원하는 곳으로 바꾸어서 파일 입출력을 하는 방법에 대해 다루어 보았다. 한편 리눅스에서는 lseek() 대신 읽고 쓸 파일 오프셋을 지정할 수 있는 read()와 write()와 비슷한 사촌격의 시스템 콜이 있다. 둘 모두 각각의 읽기, 쓰기 작업을 마친 후 파일 오프셋을 갱신하지 않는다. pread()와 pwrite() pread() 시스템 콜을 사용하면 읽을 오프셋을 지정할 수 있다. 1234#include #define _XOPEN_SOURCE 500 ssize_t pread(int fd, void *buf, size_t count, off_t pos);cs pread()를 사용하면 파일 디스크립터 fd에서 pos (지정된 오프셋) 에 있..

    7. 파일 탐색하기 - lseek()

    개요 파일 입출력을 좀 더 재미있게 할 수 있는 방법은 없을까? 파일 입출력을 할 때 무료함을 느낀다면, 그건 파일 입출력 오프셋 위치 때문일 것이다. 지금까지 알아보았던 방식 (write() 시스템 콜이나 O_APPEND 플래그를 사용하는 것)으로는 항상 파일의 시작이나 끝에서밖에 입출력을 하는 것에서 그쳤다. 하지만 중간에 다른 데에서부터 입출력을 하고 싶을 때도 있다. 이를 위해서 파일 탐색 방법을 알아두어야 할 것이다. lseek() 시스템 콜 이번에 배울 lseek()는 파일 디스크립터에 연결된 파일의 오프셋을 특정 값으로 지정할 수 있게 해주는 시스템 콜이다. 사실 이 기능을 제외하고는 다른 동작은 하지 않으며, 어떤 입출력도 하지 않는다. 단지 파일 오프셋만 옮길 뿐이다. 1234#inclu..

    간단한 TCP 서버 / TCP 클라이언트 만들어보기

    보호되어 있는 글입니다.

    6. 파일 닫기 - close()

    파일 닫기 지금까지 파일을 열고, 읽고 쓰는 작업을 지난 포스팅까지 알아보았다. 파일 다루기 작업을 끝내고 나면 파일을 닫아 주어야 안전하게 애플리케이션을 종료할 수 있다. close() 시스템 콜 파일을 닫는 데 사용되는 시스템 콜 close()는 파일 매핑을 끊으며, 원형은 다음과 같다. 123#include int close(int fd); cs 인자로 받은 파일 디스크립터 fd와 연관된 파일 매핑을 해제하며, 프로세스에서 파일을 떼어내는 작업을 한다. 이 과정을 거치면 파일 디스크립터는 더는 유효하지 않으며, 커널이 다음 open()이나 creat() 호출에서 다시 사용할 수 있게 된다. close()도 지금까지 다룬 대부분의 시스템 콜과 마찬가지로 성공하면 0, 실패하면 -1을 반환하고 errn..