일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 게임 개발
- DP
- 배경 그림
- AINCAA
- frequency-domain spectrum analysis
- pdlc
- Frequency Response
- 게임개발
- 운영체제
- Security
- ret2libc
- 유니티
- 유스케이스
- MAC
- dtft
- sampling theory
- STCF
- dirty cow
- convolution
- DSP
- 메카님
- linear difference equation
- Race condition
- information hiding
- Unity #Indie Game
- polymorphism
- link layer
- stride
- MLFQ
- SNR
- Today
- Total
목록ret2libc (3)
다양한 기록
Ret2Libc의 기본 아이디어- 리턴 어드레스를 Libc의 함수 주소로 덮어쓰는 것- 코드 주입 대신 이미 존재하는 코드를 이용- 프로세스의 메모리 이미지 구성1. 쓰기 가능한 메모리 영역 (ex. 스택, 데이터, 힙)2. 실행 가능한 메모리 영역 (ex. 코드 세그먼트, 연결된 시스템 라이브러리) Libc- 모든 유닉스, 리눅스 계열의 프로그램에 링크됨- 시스템 콜이나 다른 기능들 들고 있음 .. ex. system()ROP (Return-Oriented Programming)기본적인 Ret2Libc는 두 함수를 체인했음 (system, exit)이 기법을 일반화 시킨 것- 무한히 코드 청크를 연결 가능방어 기법ASLRCFI (Control-flow integrity) Ret2Libc는 NX 비트를 ..
C언어이고, 인텔 cpu면 일단 모든 함수에서 처음에 프롤로그가 불리고 끝날 땐 에필로그가 불림 프롤로그pushl %ebpmovl %esp, %ebpsubl $16, %esp일단 인자랑 리턴어드레스는 이전 함수의 스택 프레임에서 넣어둔 상태pushl %ebp : previous stack frame pointer(saved ebp)를 스택에 넣음movl %esp, %ebp : 현재 스택 포인터를 ebp에 넣음subl $16, %esp : 사용할 지역변수들 자리를 만들어주기 위해 esp 값 내림에필로그movl %ebp, %esppopl %ebpretmovl, popl 합쳐서 leave 라고 쓰기도 함ebp 값을 esp로 이동, esp 값에서 하나 뽑아서 ebp에 저장끝내기가운데가 movl, 맨 오른쪽이 p..
* 교육용입니다 / 방어기법 다 해제하고 진행한 거라 현대의 실제 환경에서는 불가능합니다*const char code[] = "\x31\xc0\x50\x68//sh\x68\bin" "\x89\xe3\x50\x53\x89\xe1\x99" "\xb0\x0b\xcd\x80";int main(int argc, char **argv){ char buffer[sizeof(code)]; strcpy(buffer, code); ((void(*)( ))buffer)();}* const 붙어 있어서 전역 변수로 선언되어도 텍스트 영역에 존재함어쨌든 저대로 실행해도 실행 인됨.. => Non-executable Stack 때문 (버퍼는 스택에 있음) gcc -z noexecstack ..