일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해설
- general skills
- cryptography
- picoCTF2018
- forensics
- write up
- KOISTUDY
- 시스템해킹
- picoCTF
- 카이사르
- #hacking
- Hxd
- Aleph One
- Protostar
- 시스템
- Smashing The Stack For Fun And Profit
- 리눅스
- CTF
- reversing
- 버퍼오버플로우
- 정답
- 리버싱
- writeup
- 스택
- 해킹 공부
- #picoCTF2018
- WEB
- grep
- 번역
- dreamhack
- Today
- Total
목록전체 글 (94)
Security || AI
Writing an Exploit익스플로잇 짜기~~~~~~~~~~~~~~~~~(or how to mung the stack)(또는 어떻게 스택을 망가뜨리는가)~~~~~~~~~~~~~~~~~~~~~~~~~` 이제 모든 조각들을 조합해 보자. 우리는 쉘코드를 가지고 있다. 우리는 이것이 버퍼오버플로우에 사용할 문자열의 부분이 되어야 한다는 것을 알고있다. 우리는 버퍼에 복귀 주소를 다시 지정해야한다는 것을 알고 있다. 이 예제는 이러한 점들을 증명할 것이다: overflow1.c------------------------------------------------------------------------------char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0..
쉘 코드Shell Code~~~~~~~~~~ 이제 우리는 반환 주소(return address, RET)와 실행의 흐름을 수정할 수 있다는 것을 알게 되었다. 이제 어떤 프로그램을 실행하는 것을 원하는가? 대부분의 경우 우리는 프로그램이 쉘을 실행 시키는 것을 원한다. 그런 다음 쉘로부터 우리는 원하는 명령들을 내릴 수 있다. 만약 우리가 이용하려는 프로그램안에 그러한 코드가 없다면 어떻게 할 것인가? 어떻게 임의의 명령을 주소 공간에 위치시킬 것인가? 정답은 오버플로우가 일어나는 버퍼에 실행하려고 하는 코드를 배치시키고, 반환 주소(return address, RET)에 덮어씌워 버퍼로 다시 이동 시키는 것이다. 스택의 주소가 0xFF에서 시작한고, S는 우리가 실행하기를 원하는 코드라고 생각하면서 스..
스택 영역~~~~~~~~~~ 스택은 데이터를 포함하는 메모리의 연속적인 블록이다. 레지스터는 스택의 가장 위를 가리키고 stack pointer(SP)라고 불린다. 스택의 가장 밑은 고정된 주소에 있다. 이 크기는 실행 되는 동안 동적으로 커널에 조절된다. CPU는 스택에 PUSH를 하거나 POP을 수행한다. 스택은 기능을 호출할 때 PUSH를 해서 반환할 때는 POP을 수행하는 논리적 스택프레임으로 구성된다. 스택프레임은 함수의 인자들, 함수의 지역 변수들과 함수 호출 시의 명령 포인터의 값을 포함한 바로 이전의 스택프레임을 복구하기 위한 데이터를 포함한다. 구현 방식에 따라 스택은 감소하거나(메모리 주소가 낮아짐) 증가하게 된다. 우리가 쓸 예제에서는 스택이 감소할 것이다. 이 방법이 intel, M..
.o0 Phrack 49 0o.7권, 49호File 14 of 16 BugTraq, r00t, and Underground.Org XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSmashing The Stack For Fun And Profit재미와 이득을 위해 스택 때려부수기XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX By Aleph OneAleph1@underground.org번역 dino700072@gmail.com ‘smash the stack’ [C 프로그래밍] 많은 C로 구현한 것에서는, 루틴에서 자동으로 선언된 배열의 끝보다 길게 씀으로써 실행 스택을 손상시킬 수 있다. 이러한 코드를 스택을 때려 부순다고 한다. 그리고 이는 루틴으로 돌아와서 임의의 주소로 이동할 수 있다...
1. Aleph one - Smashing the stack for fun and profit 번역하면서 버퍼오버플로우와 메모리 기초 공부 2. Hackerz on the ship - 우리집에 GDB있는데 보고 갈래? - GDB 활용 및 공부로 ELF파일 리버싱 연습 3. 달고나 문서 - 버퍼오버플로우 이론 최종 정리 4. 해커스쿨 traing 1~10, FTZ level1 ~ level20 5. Lord Of BufferOverflow (LOB) 6. 워게임 풀기 (pwnable.kr 등) 해커스쿨 페도라, CTF문제들
level1에 접속하여 hint를 아래의 명령어를 사용하여 확인해 봅니다. [level1@ftz level1]$ cat hint 힌트: level2 권한에 setuid가 걸린 파일을 찾는다. 여기서 setuid는 사용자가 파일을 열 때 파일 소유자의 권한 즉 level2가 소유하고 있는 파일의 권한을 파일을 실행할 때만 주는 것이다. [level1@ftz level1]$ find / -perm +4000 -user level2 2> /dev/null 위 명령어를 통해 찾으면 되는 문제이다. 위 명령어에 대해 설명하자면 level2권한에 최소한 4000의 퍼미션을 가진 파일을 찾는 것이다. 여기서 4는 setuid이고 000은 0-유저 0-그룹 0-나머지를 의미하는 것이므로 setuid가 걸린 모든 파일을..