전체 글
[C] printf, scanf계열
[C] printf, scanf계열
2016.11.10```c%p == %#x%2x 2자리 출력. 빈칸일 경우 공백으로 채움%02x 2자리 출력. 빈칸일 경우 0으로 채움%u unsigned type 출력. 기본은 int%h short 출력. h 한 개 붙일 때 마다 1/2씩 감소.%hhu uint8_t 출력%hhx uint8_t 16진수 출력``` ``c scanf()`` 쓸 때 마지막 개행문자가 버퍼에 남지 않을 수 있도록 format string 끝에 ``c \n``을 적어주는 것이 좋다.표준 함수에서 BOF를 예방하는 법은 ``c %100s`` 같이 사용하는 것. ( 입력을 100개의 char로 제한. )``c scanf()``는 다양한 형식을 입력받아야 할 때 사용하고, 단순히 문자열을 입력 받는 함수가 필요하다면 ``c fget()``를 사용하는..
BOF, Buffer OverFlow ( local exploit )
BOF, Buffer OverFlow ( local exploit )
2016.11.10이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C] atoi / strtol , sprintf : 문자열 > 숫자, 16진수 변환
[C] atoi / strtol , sprintf : 문자열 > 숫자, 16진수 변환
2016.11.06문자열 > 숫자```c#include int atoi(const char *nptr);long atol(const char *nptr);long long atoll(const char *nptr); long int strtol(const char *nptr, char **endptr, int base); // strtollunsigned long int strtoul(const char *nptr, char **endptr, int base); //strtoull``` 직접 변환하기```cpp auto i = 0; while (isdigit(input[pos])) i = i * 10 + input[pos++] - '0';``` 숫자 > 문자열```c#include int printf(const char ..
[shell] pipe
[shell] pipe
2016.11.03pipe란? 한 프로세스의 `` stdout``을 다른 프로세스의 `` stdin``으로 연결하는 IPC 방법이다. 파이프 한 개(r, w 한 쌍) 당 한 쪽 방향으로만 사용할 수 있다. ``` ↓ docking! ↓ -------pipe------- ---------process--------- -------pipe------- w -> r ⇒ stdin stdout ⇒ w -> r -------pipe------- ---------process--------- -------pipe------- ``` 이름없는 파이프 ```bash echo .... | File ( ...; cat ) | File ``` `` A | File`` : A의 표준 출력을 File의 표준 입력으로 연결한다. fifo ( na..
[Windows] 공유 폴더 설정
[Windows] 공유 폴더 설정
2016.11.01!!! 클라이언트 수 제한클라이언트 프로그램 중 파일을 받아올 때 마다 커넥션을 서너개 씩 막 열고 닫지는 않는 클라이언트 프로그램이 있다. 대표적으로 ES파일탐색기. 원래 안그랬는데 최근에 변경된 듯?이런 경우 사용자 수를 제한해버리면, 폴더를 눌렀는데 반응이 없거나, 파일 목록은 보이는데 재생할 수 없는 파일 형식이라고 뜨니 주의. # 공유폴더 등의 목적으로 생성한 계정을 로컬로그인 시 숨기는 방법.제어판 - 관리도구 - 로컬 보안 정책에서 로컬 정책 - 사용자 권한 할당 - 로컬 로그온 거부 에 개체를 추가하면 된다. 거부가 허용보다 우선하니 해당 계정의 그룹을 해제할 필요는 없다. RDP에서는 이 옵션이 필요 없다.windows server OS가 아닌 경우 한 OS에 여러 계정으로 로그인 할 수..
PLT, GOT
PLT, GOT
2016.11.01``c *(func@plt + 2) == func@got``다. PLT : Procedure Linkage TableGOT : Global Offset Table같은 file 내의 procedure라면 PLT가 따로 필요 없지만, 외부 library func를 호출할 때 PLT가 필요하다. linker가 PLT를 보고 func를 찾게 되기 때문. windows의 IAT와 비슷하다고 생각하면 된다. PLT는 GOT를 참조하여 해당 주소로 점프한다. dynamic linking함수를 호출할 때는 항상 PLT를 이용한다. * static 옵션으로 컴파일하면 바로 libc func 위치로 call하게 된다. system함수를 disassemble 해보면 PLT 영역의 system함수 항목이 출력된다. 해당 항목..
[webhacking.kr] 18 : SQL injection 공백 / and 우선순위
[webhacking.kr] 18 : SQL injection 공백 / and 우선순위
2016.10.29이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Proxy / VPN
Proxy / VPN
2016.10.29프록시의 기능은 크게 두가지. 1. 중계, 2. 캐싱. HTTP proxy `` X-Forwarded-For``? Client IP 구하기 : X-Forwarded-For와 X-Real-IP `` X-Forwarded-Host`` : Client가 요청한 원래 host. reverse proxy server가 원래 요청받은 서버가 어디인지 식별하기 위해 사용한다. 이 field들은 proxy server가 original host's IP를 제대로 report해준다는 데 의존하기 때문에 신뢰성이 떨어진다. 위조되기도 쉽고, 표준이 아니라 "사실상의" 표준이기 때문에 지켜지지 않는 경우도 많다. 단, 마지막 IP는 항상 마지막 proxy server에 연결된 IP다. `` X-Forwarded-For:cl..
Wireshark / tcpdump
Wireshark / tcpdump
2016.10.29ShortCut Ctrl + F 하고 나서 Ctrl +N / B Ctrl + M 마커 하고 나서 Shift + Ctrl + N / B Tip SYN이후 모든 segment는 ACK flag가 set(1)되어있다. File-Export HTTP Object 기능 유용. frame protocol은 모든 data를 포괄한다. 따라서 frame containts나 frame matches로 Ctrl + F를 대체할 수 있음. Text String 검색은 Packet Detail로 설정해야 나오는 경우가 대부분. list로 설정하면 검색이 안된다. FTP 클릭하고 Follow TCP Stream하면 segmentation되어 전송된 FTP 패킷전체가 한번에 보이고 이를 file로 save할 수 있다. 이 때 반..
NetCat ( nc )
NetCat ( nc )
2016.10.25standalone server이를 이용하면 non-socket programming binary도 standalone server로 동작할 수 있다.근데 하나의 connection만 처리할 수 있으며 connection이 종료되면 nc도 꺼진다.```bash$ nv -vvv -e /bin/sh -l -p 1234``` ```bash$ rm -f /tmp/f; mkfifo /tmp/f$ cat /tmp/f | /bin/sh -i 2>&1 | nc -vvv -l -p 1234 > /tmp/f``` * `` -i`` 는 interactive 옵션인데, 대화형 모드로 띄워준다.interactive modestartup file을 읽어들이고, 프롬프트를 표시해준다.interactive mode를 백그라운드로 돌..
FSB, Format String Attack/Bug
FSB, Format String Attack/Bug
2016.10.23#1 %08x / n$``c %x``보다 ``c %08x``를 사용하는 편이 보기도 좋고, 출력 문자 개수 맞추기도 편하다.``c %hn`` 이전에 선행 출력 문자 개수를 만들 때도 ``c %*x || %*d``를 사용한다. + 특정 위치 데이터를 출력하려면 ``c n$`` 이용한다. #2 %hn``c %n``이 작용하는 순간 그 위치 포함 +4 bytes가 ``c 0``으로 초기화 되면서 값이 써진다. 그래서 ``c %n``으로 쓰려면 하위주소 부터 쓰고 상위주소를 써야 이후에 쓰는 ``c %n``이 이전에 쓴 하위 2 bytes 값을 덮어 쓰지 않는다.그러나 이렇게 하위주소 부터 쓰고 상위주소를 써도, 4 bytes를 잡고 쓰게 되므로 다음 2 bytes를 덮어 써서 그 부분의 데이터가 손실된다.따라..
Windows Authentication [ SAM ]
Windows Authentication [ SAM ]
2016.10.14LSA , Local Security Authority [ lsass.exe ]SRM , Security Reference Monitor SAM , Security Account Manager SAMwindows 계정의 패스워드 해시를 저장하고 있는, *nix의 `` /etc/shadow``같은 파일이다.SYSKEY로 암호화 되어있기 때문에 SYSKEY를 이용해서 복호화해야 password hash를 얻을 수 있다.* 사실 단순히 password hash가 목적이라면 fgdump같은 툴을 사용해 memory에 올라가 있는 hash value를 바로 얻는 방법도 있다. FormatSAM 암호화를 풀면, windows 계정 패스워드가 다음과 같은 형태로 저장되어 있다.```username:SID:LM has..