일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- XSS
- StoredXSS
- RVA
- RSA
- Cross Site Scripting
- 딥러닝
- SQL
- 인공지능
- db
- Database
- 파일구조
- ReflectedXSS
- SQL_Injection
- 머신러닝
- 코드업
- dsa
- 기계학습
- 심층학습
- 암호학
- dvwa
- 프로그래머스
- ImageBase
- 공개키
- codeup
- 디피헬먼
- 웹
- 보안
- injection
- C언어
- Today
- Total
목록2022/09 (9)
Ye0ngJae

메모리 보호 기법 NX Bit / DEP 보호기법 NX Bit / DEP 보호기법이란 스택이나 힙 같은 영역에서 코드가 실행되는 것을 방지하기 위하여 실행 권한을 제한함으로써 셸의 실행을 막는 기법이다. 데이터 저장 공간에서는 굳이 실행 권한이 필요하지 않기 때문에, 해당 부분에서 실행 권한을 제외함으로써 만일 셸코드가 정상 코드를 덮어도 실행권한이 없어 셸이 실행되지 않는다. 이 기법은 윈도우에서는 DEP. 리눅스에서는 NX Bit 기법이라고 부른다. 위 코드와 같이 일반적인 C코드를 컴파일 한다고 했을 때, 명령어는 다음과 같다. DEP-disabled : gcc -z execstack -o DEP-disabled DEP.c DEP-enabled : gcc -o DEP-enabled DEP.c NX ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.

문제 풀이 더보기 우선 문제를 까줬다. main 함수부터 살펴보면 0xdeadbeef를 인자로 func함수를 호출하는 것을 볼 수 있다. 이제는 func 함수를 까보자. 위 어셈블리와 다른 정보를 섞어서 c언어로 바꾸어 보면 void func(??){ char overflowme[32]; printf("overflow me : "); gets(overflowme); if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah.."); } } 대충 이렇다고 볼 수 있다. 따라서 그냥 위 코드대로 익스 코드를 짜주면 될 것 같다. Flag 값이 정상적으로 확인된다.