티스토리

공부블로그
검색하기

블로그 홈

공부블로그

blog.ch4n3.kr/m

ch4n3 님의 블로그입니다.

구독자
7
방명록 방문하기

주요 글 목록

  • scanf가 씹히는 경우 레드벨벳 조이 C언어로 코딩을 하는 경우 무한루프 ( while (1), for (;;) ) 안에서 scanf() 함수를 호출하여 값을 연속적으로 받고 연산을 하는 경우가 많다. 근데 이 경우에 scanf()가 씹히는 경우가 빈번히 생기는데, 이 때의 해결법을 써보도록하겠다. scanf()가 씹히는 경우는 버퍼에 사용자가 입력한 것이 남아있기 때문이다. %c를 받는 경우엔 \n (0x0a) 도 버퍼에 들어가기 때문에 scanf() 함수에서는 다음 루프를 돌 때 입력받은 값이 \n (0x0a) 된다. 이 경우에는 내가 생각한 두 가지의 해결책으로 해결할 수 있다. 1. scanf() 함수 뒤 getchar() 함수를 사용한다. - scanf() 함수 뒤 getchar() 함수를 사용하면 scanf()를 호.. 공감수 1 댓글수 0 2018. 10. 16.
  • 후배가 질문해서 답하는 글 : 스트림은 왜 쓰는 건가요? 스트림을 사용하는 이유는 당연히 '효율성을 위해서'이다. 한 번 예를 들어보겠다. 당신은 농부이다. 땅을 파고 있다. 땅을 판 후, 흙을 강 건너의 창고에 두어야 한다. 그럼 당신은 삽으로 한 번 파고 그 걸 들고 가서 창고에 넣을 것인가 아니면,수레를 하나 옆에 두고 샆으로 그것을 계속 쌓아둔 후 창고에 한꺼번에 넣을 것인가? 효율성의 문제이다. 공감수 1 댓글수 0 2018. 5. 24.
  • pwnable vulnerable functions 포너블에서는 해당 프로그램이 어떤 취약점을 갖고 있는지 빠르게 확인하는 것이 중요하다. 그것이 해당 문제를 얼마나 빨리 푸냐에 직결되기도 하니까. 그래서 C언어에서 공격에 취약한 함수들을 정리해보려고 한다. gets() gets 함수는 가장 대표적으로 가장 취약하다고 판단되는 함수이다. 해당 함수가 취약한 이유는 값을 얼만큼 받을지 정할 수 있는 장치가 아무것도 없기 때문이다. 만약 char buffer[40]인데 gets(buffer)로 받는 값을 크기가 100bytes 면 다른 변수들을 overwrite 할 수 있기 때문에 취약하다. strcpy() strcpy는 한 버퍼에 있는 값을 다른 버퍼로 보내는 함수이다. 이 함수도 말할 것도 없이 취약하다. 길이 제한을 할 수 없으니, 당연히 위험하다. L.. 공감수 0 댓글수 0 2018. 2. 17.
  • Linux 의 ELF 실행 과정 이 글은 해당 글을 보고 난 뒤 정리하는 글입니다. 공감수 0 댓글수 0 2018. 2. 15.
  • 파도파도 끝이 없는 bss에 대하여 예전에 bss 영역에 대해서 정리한 포스트와는 다르게, 오늘 bss에 대해서 새롭게 알게 된 사실이 있어서 여기에 적어보도록 하겠다.. ( 해당 포스트에서는 bss 영역이 초기화되지 않은 전역변수를 갖고 있지 않아도 규칙적으로 4bytes 를 갖는 것에 의문이 들어 정리한 글이다. ) 초기화되지 않은 전역변수가 없을 경우에도 bss section은 4 bytes의 크기를 갖게 되는데, 이 때 들어가는 값은 0x00000000 이다. gdb로 값을 보면, 이렇게 표현되어 있는데 아무리 구글링을 해도 나오지가 않는다. (예제로 사용한 코드는 "Hello world"를 출력하는 단순한 프로그램이었다.) 그냥 bss 영역이 "나 여기 있어요!!"라고 소리치는 값으로 생각하면 될 것 같다. bss의 숨겨진 값.... 공감수 1 댓글수 0 2018. 2. 14.
  • random number generation without random(), /dev/urandom 그냥 멍때리다가 생각났다. random(), /dev/urandom 없이도 랜덤값을 생성할 수 없을까? ASLR 이 생각나서 급하게 코딩해보았다. 생각보다 random 한 값이 안나온다. 수가 -6, -4, -2, 0, 2, 4, 6에서만 나오는 것이 가장 문제이고 ASLR이 적용되지 않은 시스템에서는 사용하지 못한다는 단점이 있다. 실용적이지는 못하지만, 그래도 새로운 방법을 창조했다는 것에 의의를 두자ㅋㅋ 공감수 0 댓글수 0 2018. 1. 13.
  • 내가 생각한 C언어 웹서버 구현 원리중의 고민 Layer7의 경빈이를 화요일에 만나서 이런저런 얘기를 하다가 다시 웹서버를 개발하겠다는 목표를 세우고 많은 것을 계획 중이다. 웹서버의 역할은 크게 3가지로 나눌 수 있을 것 같다. 1. Client의 요청을 받고 다시 Client로 HTTP Packet을 보내는 것. 2. HTTP Protocol에 맞게 Client Requests를 파싱하는 것. 3. html이든 php든 Client의 요청에 맞게 연결해주는 것. 일단 첫번째로 언급한 Client요청을 받고 다시 보내는 것은 C언어 TCP/IP 소켓 프로그래밍을 공부하면 충분히 할 수 있다. (참고로, 이 부분은 이미 완성한 상태이다.) 2번째로 Client request를 HTTP Protocol에 맞게 Parsing하는 것은 그럭저럭 할 수 있.. 공감수 0 댓글수 0 2017. 11. 24.
  • return과 exit()의 차이 https://stackoverflow.com/questions/3463551/what-is-the-difference-between-exit-and-return return은 함수를 종료하는 것이고,exit()는 프로세스 자체를 종료하는 것이다. 공감수 0 댓글수 0 2017. 8. 28.
  • pcap PCAP AnalyseH3X0R팀 소속 BoB 6기 ch4n3 tmp) 비오비 과제로 pcap을 이용해서 패킷을 캡쳐하고 분석하는 과제가 나왔는데 검색해보니까 pcap에 대해서 정리한 한국어 문서가 그리 많지가 않아서, 이를 계기로 내가 pcap 한글 문서의 선구자가 되려는 불순한 의도에 떠밀려 이 포스트를 작성하게 되었다. 근데 워낙 pcap을 정리해놓은 사이트(http://www.tcpdump.org)에 정리가 잘되어 있기 때문에,, 내 글은 그리 영양가 없는 글이 될 것이라고 생각해본다. 참고로, 나는 LINUX를 중심으로 함수를 써놓을 예정이다. PCAP_LOOKUPDEV() 함수이 함수를 실행했던 때가 가장 신기했던 것 같다. 이 함수를 이용해서 기본 네트워크 디바이스 이름(default net.. 공감수 0 댓글수 0 2017. 7. 13.
  • zlib 분석 zlib 분석H3X0R팀 소속 BoB 6기 ch4n3 1. zlib이 사용하는 알고리즘 : DEFLATE 알고리즘 일단 zlib source를 분석하기 전에 zlib이 사용하는 알고리즘에 대해서 알아둘 필요가 있는 것 같다. zlib은 ZIP 포맷을 사용하기 위해서 만들어졌다는 DEFLATE 알고리즘을 사용한다. 이 알고리즘은 단순하게 ZIP 알고리즘 외에도 PNG, DOCX, PPTX 등의 문서 포맷에서도 사용된다. 이 알고리즘을 구현한 소스 중에서, zlib이 가장 유명하다고 한다. 1.1 zlib 알고리즘의 구성 zlib알고리즘은 크게 두가지의 알고리즘으로 구성되어 있는데, 첫 번째가 LZ77 알고리즘이고, 두 번째가 Huffman coding 알고리즘이다. 일단 압축할 데이터를 LZ77 알고리즘으.. 공감수 0 댓글수 0 2017. 7. 8.
  • GCC의 구조 GCC의 구조1. GCC의 역사 - Ultra sparc machine - 처음에는 크로스컴파일용이 아니였음.2. GCC의 구조일반 커파일러 구조 Lexical Analyzer - Toenizer - Parse - Linker - Linker : obj 파일들을 연결함 - obj : 변수로 선언했던 부분이 아직 변수로 남아 있음 Linking 이 끝나야 메모리 값이 변수값에 대칭됨 4 stage 1 stage : pure C compiler -> 변수이름이 주소로 나옴 ( 주소가 나오는 실행형식이 없는 a.out 포멧 실행 파일, 동적 할당 라이브러리 사용 불가 ) 2 stage : pure C Compiler + Standard I/O (Kernel 헤더정보 : 실행형식, 메모리 번지수, 스레드 등.... 공감수 0 댓글수 0 2017. 7. 6.
  • sql에서 NULL 비교 SQL에서 NULL비교 - H3X0R, S1IPP3R, 데몬팀 소속 ch4n3 - SQL에서는 asdf=NULL 이렇게 비교하면 안돼고, asdf is null 이런 식으로 비교해야 합니다. 공감수 0 댓글수 0 2017. 3. 31.
  • [C] perror() 함수 ★어그로 대장 석차니★ 오늘은 정말정말 가벼운 장난을 준비해봤음ㅇㅇ 일단 터미널에 접속하고 C라는 디렉터리가 보여서 들어가봄 분명 C로 프로그래밍한 게 들어있을 거란 말이지 역시 맞음. C로 프로그래밍한 게 들어 있었는데 그중에 가장 만만해 보이는 hello.c 파일에 장난을 쳐보겠음. 역시 이거만 있었음ㅋㅋㅋㅋㅋㅋㅋㅋ 이제 부터 시작 이렇게 하면 파일 오픈에 관련한 오류가 뜰거야ㅋㅋㅋㅋㅋ 그럼 명령어를 입력하고도 파일이나 디렉터리가 없다는 오류 메시지가 나올 거임. (만약 응앍읽옭욹엙웱.응앍읽옭욹엙웱 이라는 파일이 있다면 오류 안 뜸) 그리고 프로그래머는 대혼란 크으~ 오졌구여! 이제 컴파일까지 오류없이 마쳤으니까 한 번 테스트 해봐야지 ㅋㅋㅋㅋㅋㅋㅋ 예상대로! 근데 장난칠 친구가 없어서 실패 그럼 p.. 공감수 0 댓글수 5 2016. 9. 11.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.