| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 이너
- amd64 #x86-64 #x64 #레지스터 #컴퓨터 구조
- Systemhacking #Pwnable #CTF #Write-up #WolvCTF
- Webhacking #CTF #Write-up #WolvCTF
- pointer
- dreamhack #rev-basic #reversing
- Layer7 #해킹 #동아리 #시연회 #부엉이
- 포인터_보고서
- Today
- Total
목록전체 글 (41)
stxxp
◎ 목차 ◎ # Linux 1. PIE > 동작, 필요성, 적용 실습, 한계 2. Canary > 동작, 필요성, 적용 실습, 한계 3. ASLR > 동작, 필요성, 적용 실습, 한계 4. NX bit > 동작, 필요성, 적용 실습, 한계 5. RELRO > 동작, 필요성, 적용 실습, 한계 # Linux아래는 리눅스의 메모리 보호 기법이다.1. PIE ( Position Independent Execution)PIE 보호기법은 직관적으로 해석하면 "위치 독립 실행"을 의미한다. 이는 매번 실행할 때마다 실행 파일이 메모리의 랜덤한 주소에 로드되도록 하는 보호 기법이다. 이는 공격자가 파일의 특정 주소를 예측하기 어렵게 만든다. ▶ ..
dreamhack: Stupid GCC 풀이 ◎ 목차 ◎ # 문제 분석# 문제 풀이# 다른 풀이 1. 풀이1 2. 풀이2 # 문제 분석 문제에서 아래의 a.c 파일이 주어졌다.파일을 실행해보면 배열과 해당 인덱스에 들어있는 값이 무작위로 10개씩 출력되는 것을 볼 수 있다. 문제에서 SSH 정보를 주었기 때문에 접속을 시도했다. sudo su를 사용하면 root에서 실행할 수 있다.명령어설명suroot 비밀번호를 입력해 root 계정으로 전환sudo su현재 사용자의 관리자 권한을 이용해 root로 전환 (사용자 비번 입력) 상위 디렉토리를 살펴보면 아래와 같다.flag.txt가 보이지만 접근 권한은 없다. # 문제 풀이위의 a.c 코드를 다시 보면, while문이 10번 실행되는 동안 v..
◎ 목차 ◎ # 보호기법 # 소스코드 분석 1. 함수 분석 2. 취약점 분석 # 문제 풀이 1. 디버깅 2. Exploit 코드 # 보호기법 카나리와 NX 보호 기법이 걸려 있다. 더보기 Canary와 NX는 메모리 보호 기법이다. Canary 보호 기법의 경우 버퍼와 return address 사이에 특정한 값을 집어넣어 스택 오버플로우를 막는 기법이다. 이 카나리는 main이 실행될 때마다 변경되어 무작위로 생성되며, 반환 주소 ret에 접근하기 전에 카나리 값의 위변조를 유무를 확인한다. 만약, 변조된 것이 확인되면 프로세스는 강제로 종료되게 된다. 공격자가 실행 흐름을 변경하기 위해서는 ret, sfp 이전에 카나리 값을 반드시 덮어야 하기 때문에 카나리값을 모르면 BOF 공격이 불가능해진다. N..
코드 : 123456789101112131415161718192021222324252627#include stdio.h> void setup(){ setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); setvbuf(stderr, 0, 2, 0);} int main(void){ setup(); char buf[0x100]; printf("What's your name? : "); gets(buf); printf("Hello "); printf(buf); printf("!!!\n"); printf("Last greeting : "); gets(buf); return 0;} cs 다시 시도해도 ..
Gauntlet의 의미 그대로 웹페이지 10개를 클리어해야 flag를 얻을 수 있는 문제였다. 각 페이지마다 차근차근 작성해보려고 한다. 주어진 링크를 클릭하면 위와 같은 페이지가 나온다. Elements에서 코드를 확인해보면 주석에 다음 페이지로 넘어갈 수 있는 키가 냅다 보인다. 이렇게 하면 첫 번째 페이지가 나온다. 읽어보니 HTTP Request에 주어진 헤더를 추가하면 숨겨진 페이지로 이동할 수 있을 것 같다. burp suite의 proxy를 사용했다. (접은 글 참고) 더보기 헤더를 주면 새로운 페이지로 넘어갈 수 있게 된다. 넘어온 두 번째 페이지다. 첨부되어 있는 링크를 따라 들어가면 HTTP Request 메서드들과 각각의 쓰임에 대해 정리되어 있는 페이지가 뜬다. 여기서 OPTIONS..
문제의 C코드를 살펴보자. 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 #include #include /* ignore this function */ void ignore() { setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stdin, NULL, _IONBF, 0); } void get_flag() { char *args[] = {"/bin/cat", "flag.txt", NULL}; execve(args[0], args, NULL); } int main() { ignore(); char buf[0x20]; printf("What's your name?\n>> "); gets(buf); printf(..
진짜 정말 아주 오랜만에 글을 쓴다. 이 블로그를 다시 찾은 것 자체가 참 오랜만인 것 같다. 해킹 공부에 소홀했던 지난날을 반성하며 앞으로 자주 글을 써보려 한다. ◎ 목차 ◎ # x86-64 # 레지스터 1. 범용 레지스터 2. 세그먼트 레지스터 3. 명령어 포인터 레지스터 4. 플래그 레지스터 5. 32bit 이하 아키텍처 레지스터와의 호환성 # x86-64 x86-64은 인텔의 IA-32를 64bit로 확장한 AMD64 아키텍처가 인정받기 시작한 후, 인텔을 비롯한 여러 회사들이 이를 기반으로 한 여러 아키텍처를 만들어내는 과정에서 탄생한 아키텍처이다. 좀 더 정확히는 AMD64 기반 아키텍처를 범용적으로 지칭하는 명칭이 탄생한 것이라 할 수 있다. 다시 말해 AMD64 = x86-64라고 봐도 ..
보호되어 있는 글입니다.