분류 전체보기
SQLMap
SQLMap
2017.09.05이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C] 타입 Types / Type Casting / 가변 인자
[C] 타입 Types / Type Casting / 가변 인자
2017.09.04``c ``를 사용하도록 하자.``c int``보다 ``c uint8_t`` 같은 고정 크기 타입을 사용하는 것이 좋다.``c char``보다 ``c TCHAR``를 사용하는 것이 좋다. 윈도우인 경우 컴파일 옵션에 따라 리눅스 등에서도 호환 가능하기 때문. Types```cuintptr_t```포인터를 대상으로 덧셈, XOR 등 수치 연산이 필요한 경우 포인터를 숫자값으로 취급하기 위해 사용하는 타입.어떤 포인터라도 담을 수 있는 크기의 데이터 타입이라는 의미가 된다.따라서 포인터를 대상으로 수치 연산이 필요한 경우 사용한다.``cpp (uintptr_t)this + 4`` 이렇게 더하기 연산을 해도 1씩 증가하기 때문에, `` uint8_t*``같은 것으로 변환하는 것 보다 더 낫다. `` uint8..
[C/C++] define, inline, const, enum, enum class
[C/C++] define, inline, const, enum, enum class
2017.09.04#define의 쓰임``c #define``은 옵션이나 flag를 지정할 때만 사용하고, 다른 용도일 경우 ``c inline``이나 ``c static const``를 사용하는 편이 좋다.이렇게 할 경우 1. type-safe하고, 2. 어디에 쓰느냐에 따라 scope도 지정 가능하며, 3. 디버깅 심볼이 생성되어 디버깅이 편하다는 장점이 있다. 간단한 함수 차원의 #define / inlineC에서 사칙연산 같은 간단한 작업은 ``c #define macro``를 활용해 왔으나, 요즘은 C에서도 inline이 가능하므로 이 쪽을 권장한다.```cextern inline void f() { }``` C++에서도 ``c #define``은 꼭 필요한거 아니면 쓰지 않는 것을 권장한다. (Google C+..
[webhacking.kr] 2 : blind sql injection ( cookie )
[webhacking.kr] 2 : blind sql injection ( cookie )
2017.09.03이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Return to VDSO using ELF Auxiliary Vectors leck
Return to VDSO using ELF Auxiliary Vectors leck
2017.09.02http://v0ids3curity.blogspot.kr/2014/12/return-to-vdso-using-elf-auxiliary.html2016/11/21 - [System/etc] - Memory Layout, Segment / Stack layout Linux Stack Layout with Auxiliary Vectors```c0x7fffffffe0e8: 0x00007ffff7a36f45 ( main's ret )0x7fffffffe0f0: 0x0000000000000000 ( argc )0x7fffffffe0f8: 0x00007fffffffe1c8 ( **argv ) .................... 0x7fffffffe1c0: 0x0000000000000000 ( argc )0x7fff..
[Git] commit message 작성법 / 코드 리뷰 comment 작성법
[Git] commit message 작성법 / 코드 리뷰 comment 작성법
2017.09.01커밋 메시지 작성 규칙당신이 무엇을 끝냈는지에 대해 명령조로 작성하세요.커밋 메시지를 과거형으로 작성하지 마세요.커밋 메시지 제목의 첫 글자는 대문자로 적으며, 마침표는 찍지 마세요Clean your roomClose the doorTake out the trashTurn off the light첫 줄은 50자 내로, 나머지 줄은 70자 내로 작성하세요.두 번째 줄은 항상 비워둬야 합니다.나머지 줄(세 번째 줄 부터)은 항상 자세하게 적어두세요. 관련 issue가 있다면, `` [] message`` 형식으로 작성해 커밋하면 해당 Issue와 커밋이 자동으로 양방향 링크된다.`` []/[] message`` 형식으로 타 레포지토리 이슈를 참조하는 것도 가능하다. 코드 리뷰 comment 작성코드 리뷰는 ..
[python] asyncio
[python] asyncio
2017.08.27파이썬의 코루틴과 태스크 API파이썬의 이벤트 루프 API asyncio실행 흐름```pythonimport asyncio async def sub(n): await asyncio.sleep(n) print("sub{}".format(n)) async def comain(): times = [1, 2, 2] fts = [asyncio.ensure_future(sub(t)) for t in times] for f in asyncio.as_completed(fts): x = await f print("comain") loop = asyncio.get_event_loop()loop.run_until_complete(comain()) # comain()이 Future로 wrapping되며 Task schedul..
[python] ( coroutine / Task )와 비동기 모듈
[python] ( coroutine / Task )와 비동기 모듈
2017.08.25coroutine 코루틴이란 ? 각 루틴이 종속적인 관계 아닌(caller, callee 관계인 subroutine이 아닌) 대등한 관계로, 서로를 순차적으로 호출하도록 되어 있는 함수 ~3.4 에서는 제너레이터를 사용해 코루틴을 구현 제너레이터는 어디까지 실행했는지를 기억했다가 나중에 다시 그 부분부터 실행되기 때문에, 이를 Future와 결합하면 코루틴을 구현하기 용이 ```python # next(c) 한 번 호출 시 다음 yield까지 실행. # 즉 아래 함수는 next(c)를 3번 호출 가능 def coro(): # 밑줄 부분을 실행("yield1" 반환)하고 첫 번째 멈춤. 즉 hello = ???는 아직 실행 전. hello = yield "yield1" yield hello # hello를..
[python] threading, multiprocessing, GIL, concurrent.futures.ThreadPoolExecutor
[python] threading, multiprocessing, GIL, concurrent.futures.ThreadPoolExecutor
2017.08.25threading ( multiprocess ) 직접 `` threading.Thread`` 클래스의 객체를 생성하는 방법 `` threading.Thread``를 상속받은 다음 이 클래스의 객체를 생성하는 방법 (한 가지 방법이 더 있지만 어차피 안쓴다) #1 import threading def say(msg): for i in range(2): time.sleep(1) print(msg) for msg in ['THREAD1', 'THREAD2', 'THREAD3']: t = threading.Thread(target=say, args=(msg, )) # recv() 같은 blocking 함수를 호출하는 thread는 flag를 False로 만든다고 해도 # 애초에 recv()에서 넘어가질 않기 때..
소켓 프로그래밍 관련 ( Socket programming )
소켓 프로그래밍 관련 ( Socket programming )
2017.08.252016/09/20 - [Network] - TCP { TIME_WAIT }실험적, 경험적으로 판단한 내용이라 항상 이렇게 동작함을 보장하지는 않는다. ```client → output_buf → ~network~ → input_buf → recv └─────── not app layer ───────┘```TCP socket에서, socket 사이에 주고받는 데이터의 단위는 TCP segment다.client에서 `` send(str)`` 시 `` str``이 하나의 TCP segment에 들어가 전송된다.server에서 `` recv()``는 다음과 같이 동작한다.buffer에 데이터가 있는 경우 buffer에 있는 데이터를 모두 또는 지정된 크기만큼 가져오면서 blocking을 해제하고 다음 코드를..
[CodeGate2014] angry_doraemon
[CodeGate2014] angry_doraemon
2017.08.24https://github.com/umbum/pwn/blob/master/exploit/cg_angry_doraemon.py code section ``c 0x08048C62``에 ``c execl('/bin/sh', ...)``가 있다. 5. Fist attack의 function pointer ``c buf()``를 이용해 여기를 호출하도록 하려 했는데 ``c if ( BYTE3(buf) != 8 )`` 로 검사하기 때문에 ``c 0x08``로 시작하는 code section을 호출할 수는 없다.여기는 훼이크다. 4. Throw mouse에서 read overflow가 발생하므로, 이를 이용해 ret addr을 조작할 수 있다.canary가 있기는 하지만, fork하므로 leak할 수도 있고 bf로 ..
[IDE/Editor] Shortcut + Setup
[IDE/Editor] Shortcut + Setup
2017.08.23기능 VScode IntelliJ Visual Studio 에디터로 포커스 Ctrl + 1 Esc goto match brace Ctrl + Shift + \ 전체 정렬 Alt + Shift + F Ctrl + Alt + L Emmet ol>li.item{$}*4 Find Usages Shift + F12 [Ctrl +] Alt + F7 정의 / 사용 부분으로 이동 F12 Ctrl + B 타입 정의 부분으로 이동 Ctrl + Shift + B 구현 부분으로 이동 [Ctrl +] Alt + B 다음 일치 문자열 탐색 [Shift] + F3 이름 일괄 변경 F2 Shift + F6 해당 단어 모두 선택 Ctrl + F2 docstring 주석 열기 F1 함수 호출 시 args 정보 (생성자 종류를 본다던가)..