본문 바로가기

전체 글345

동기 비동기/ blocking nonblocking 개념 blocking io : 호출된 함수가 자신의 작업을 모두 끝낼 때까지 제어권을 갖고 있어 호출한 함수가 대기하도록 만든다. non blocking io : 호출된 함수가 바로 return해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 한다. ☞ 호출되는 함수가 바로 리턴하느냐 마느냐가 중점 synchronous : 동기는 함수를 호출하고, 호출된 함수의 작업이 완료된 후의 return을 기다리거나 return을 받더라도 호출한 함수가 계속해서 작업완료 여부를 신경쓴다. asynchronous : 함수를 호출할 때 callback 함수를 같이 전달해 작업이 완료되면 callback을 실행시킨다. ☞ 호출되는 함수의 작업 완료 여부를 누가 신경쓰느냐가 중점 ▼한 방에 이해하기 https://mu.. 2021. 7. 29.
websocket, socketio 이란? websocket 등장 배경 - http 통신 자체가 클라이언트에서 서버로의 단방향 통신을 위해 만들어진 방법이다. - websocket 이전에는 실시간 통신을 위해서 polling, long polling 같은 기술을 사용했다. polling 클라이언트가 서버로 http request 계속 날림. 서버는 이벤트가 있을 때만 응답. (단점) 클라이언트가 계속 request를 보내기 때문에 클라이언트가 많아지면 서버의 부담이 커진다. long polling 클라이언트가 서버로 일단 http request를 날린다. 그 상태로 계속 기다리다가 서버에서 해당 클라이언트로 전달할 이벤트가 있다면 그 순간 response 메시지를 전달하면서 연결이 종료된다. 클라이언트는 다시 곧바로 http request를 날려.. 2021. 7. 29.
FTZ - level20 hint 일단 포맷스트링 버그구나... 드림핵 강의 정독하고 푸는 게 좋다. https://dreamhack.io/learn/3#23 로그인 | Dreamhack dreamhack.io 환경변수에 쉘 코드를 등록해놓고,(export MYSHELL=$(python -c 'print "\x90"*0x1000 + "쉘코드"') 그 주소를 구해서 ☞ 나의 경우 0xC0000000 - 0x1000 = 0xBFFFF000 포맷스트링 버그를 이용해 attackme의 ret에 덮어씌우면 되겠다, 라고 생각했다. 하지만 gdb attackme - disas main 이 작동하지 않았다. 그래서 일단, 덮어씌울 주소를 (addr)으로 가정했다. 그렇다면 드림핵 강의에서처럼 쉘코드가 있는 환경변수의 주소가 bfff(=491.. 2021. 7. 28.
[python] socket과 multi-thread 통신 과정이나 예제 코드는 검색하면 많이 나온다. 하지만 예제 코드는 대부분 server.py에서 ping해야지만 client.py에서 pong하는 방식이다. 그런데, 우리는 카톡할 때 한 사람이 우다다다 보내기도 하고, 한 사람은 상대방이 계속 보내는 것을 읽다가 자신이 답장하고 싶을 때 답장한다. 이때 멀티 스레드를 이용한다고 한다. ▼코드는 여기 다 나와있다. https://seolin.tistory.com/98?category=762768 파이썬 소켓 프로그래밍 - 2. 간단한 채팅 프로그램 구현(2) 지난번에 설명한게 많아서 이번엔 설명할 게 별로 없을 듯합니다. 지난 포스트에서는 소켓 통신을 이용해서 서버와 클라이언트가 각각 한번씩 메시지를 주고 받게 만들었습니다. 그렇다면 이걸 seolin... 2021. 7. 28.
FTZ - level19 hint 이전에 환경변수로 푼 것과 동일하게 풀면 된다. 다만, 쉘코드를 삽입할 때 "setreuid(geteuid(), geteuid()) 까지 포함시킨 쉘 코드" 를 찾아서 넣어야 한다. 문제 풀이는 이전 것과 같으므로 생략하고.. 리눅스 Permission $ id 사용자 정보, uid, gid, 소속 그룹 확인 $ whoami 사용자 아이디 출력. current effective user id ruid - Real User ID - uid에 따른 읽기, 쓰기, 실행 권한을 설정함으로써 프로세스에 대해 소유자별로 권한을 줄 수 있으며 - 이 값은 변하지 않는다. euid - Effective User ID - setuid 권한이 설정된 실행 파일에 의해 변경된다. - 일시적으로 다른 계정의 uid를.. 2021. 7. 28.
[python] select vs epoll, 멀티 플렉싱 vs 멀티 프로세스 개념 ▼ 한 방에 이해하기 https://94kimseongjun.tistory.com/71 6월14일 epoll, 레벨트리거, 엣지트리거, 멀티캐스트 select() 장단점 장점 - 다양한 운영체제에서 사용 가능 (좋은 이식성) 단점 - 서버가 많은 동시 접속자(Client) 지원 어려움 (FD_SETSIZE로 제한) - 다중화 처리 속도 느림 Select() 함수 리턴 후, 모든 파일 94kimseongjun.tistory.com + + + + 나의 덧붙임.. select 함수의 단점 매번 os에게 관찰 대상을 인자로 전달해야 한다. epoll 개요 select의 대체자. select의 단점을 보완하기 위해 리눅스 환경에서 사용할 수 있도록 만들어졌다. 계속해서 정보를 넘기지 않기 위해서 관찰 대상인 fd.. 2021. 7. 27.