일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- ChatGPT
- 러닝 스칼라
- Shellcode
- backend
- c
- mysql
- BOF
- Linux
- Javascript
- flask
- 러닝스칼라
- Python
- 챗GPT
- 경제
- 웹해킹
- Web
- php
- deep learning
- webhacking
- hackerschool
- hacking
- 리눅스
- hackthissite
- c++
- 인공지능
- Scala
- BOF 원정대
- 파이썬
- 백엔드
- Today
- Total
목록전체보기 (206)
jam 블로그
다음은 문제의 소스입니다. [그림 1] nightmare.c 소스분석 1. buffer의 크기 40 2. 인자값은 적어도 하나 이상 3. 리턴값이 strcpy의 값이어야 한다. 4. strcpy로 첫번째 인자값은 buffer에 복사 5. buffer+48 뒤쪽의 4byte를 AAAA로 채운다. 풀기위한 과정입니다. 0. bash2 1. strcpy의 주소값 구하기 2. buffer의 주소값, argv[2]의 주소값 구하기 3. bof 공격 0. 공격 방법 PLT란? 일종의 실제 호출 코드를 담고 있는 Procedure Linkage Table(프로시져 링키지 테이블)로써 이 내용 참조를 통해 _dl_runtime_resolve가 수행되고, 실제 시스템 라이브러리 호출이 이루어지게 된다. strcpy의 구..
다음이 문제 소스입니다. /* The Lord of the BOF : The Fellowship of the BOF - succubus - calling functions continuously */ #include #include #include // the inspector int check = 0; void MO(char *cmd) { if(check != 4) exit(0); printf("welcome to the MO!\n"); // olleh! system(cmd); } void YUT(void) { if(check != 3) exit(0); printf("welcome to the YUT!\n"); check = 4; } void GUL(void) { if(check != 2) exit(0..
다음 문제의 소스를 보자. [그림 1] zombie_assassin.c 소스분석 1. buffer의 크기는 40 2. 인자값은 적어도 하나이상 3. 첫번째 인자값의 48번째 값이 \xbf,\x40이면 안됨. 4. 첫번째 인자값의 길이 48 만큼 buffer에 복사함. 공격하기 위한 과정입니다. 0. bash2 1. system, exit, /bin/sh, leave, buffer의 주소값 구하기 2. bof 공격 1. system, exit, /bin/sh, leave, buffer의 주소값 구하기 [그림 2] system, exit의 주소값 [그림 3] leave의 주소값 [그림 4] /bin/sh의 주소값 [그림 5] buffer의 주소값 2. bof 공격 fake ebp에 대해서 알아보자. sfp ..
다음 문제의 소스 입니다. [그림 1] assassin.c 소스분석 1. buffer의 크기는 40 2. 인자값은 적어도 하나 이상 3. 첫번째 인자값의 48번째 값이 \xbf이면 안됨. 4. 첫번째 인자값의 48번째 값이 \x40이면 안됨. 5. buffer, sfp 초기화 문제 푸는 과정입니다. 1. 리턴, system, exit, /bin/sh의 주소값 구하기 2. bof 공격 1. 리턴, system, exit, /bin/sh의 주소값 구하기 [그림 2] 리턴, system, exit의 주소값 [그림 3] /bin/sh 주소값 2. bof 공격 공격방법은 ret에 도달하면 ret에 있는 주소값으로 넘어가고 그 주소값에 있던 값 4byte를 실행시킵니다. 따라서 ret에 똑같은 ret의 주소값을 한..
다음 문제의 소스를 봅시다. [그림 1] giant.c 소스 분석 1. buffer의 크기는 44 2. /home/giant/assasin 파일에서 연계된(?) library에서 execve의 주소값을 얻어옵니다. 3. libc.so.6의 정보들에서 __execve의 주소값을 받아옵니다. 4. argv[1]의 45번째값부터 4byte를 ret에 복사합니다. 5. ret과 위에서 만든 execve 주소값과 같아야 합니다. 풀기위한 과정은 다음과 같습니다. 0. bash2 1. 소스 복사시 /home/giant/assassin -> /home/bugbear/giant로 변경 2. execve의 주소값 구하기 3. exit의 주소값 구하기 4. /bin/sh의 주소값 구하기 5. argv[0]의 주소값 구하기..