| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 리눅스마스터2급
- 리눅스
- XSS
- 파이썬
- 피자나눠먹기3
- OSI 7계층
- 리버싱
- 프로그래머스
- 나머지구하기
- 드림핵
- 피자나눠먹기1
- 네트워크
- web
- PHP 개발환경
- sql_injection
- 중앙값구하기
- phpreg
- 웹
- 아파치
- 웹해킹
- 피자나눠먹기2
- dreamhack
- XAMPP설치
- php
- 더 메뉴
- 짝수는싫어요
- XAMPP
- webhacking
- 리눅스마스터
- 문제풀이
- Today
- Total
목록전체 글 (48)
이것저것
1. 스택이란?스택(Stack)은 데이터를 임시로 저장하기 위해 사용하는 메모리 영역이다.함수가 호출될 때 함수의 반환 주소, 저장해야 하는 레지스터, 지역 변수 등의 정보를 관리하는 데 사용된다.스택은 일반적으로 높은 주소에서 낮은 주소 방향으로 성장한다.높은 주소┌─────────────────┐│ ││ Stack ││ │├─────────────────┤│ ││ ↓ ││ 낮은 주소 │└─────────────────┘스택의 현재 위치를 가리키는 레지스터가 RSP다.RSP → 현재 스택 위치2. 스택 프레임이란?함수가 실행되면 해당 함수가 사용할 공간이 스택에 만..
1. 함수 호출 규약이란?프로그램에서 함수가 호출될 때는 단순히 call 명령어만 실행되는 것이 아니다.함수에 전달할 값을 어디에 넣을지, 반환값은 어디에 저장할지, 함수 실행이 끝난 뒤 스택을 누가 정리할지 등에 대한 규칙이 필요하다.이러한 함수 호출에 대한 약속을 호출 규약(Calling Convention)이라고 한다.리버싱에서는 호출 규약을 알고 있어야 다음과 같은 코드를 보고 함수의 인자와 반환값을 추측할 수 있다.함수 호출 ↓인자 전달 ↓함수 실행 ↓반환값 전달 ↓호출 이후 정리2. cdeclcdecl은 전통적인 32비트 x86 환경에서 많이 사용되는 호출 규약이다.함수의 인자는 일반적으로 오른쪽 인자부터 스택에 넣는다.예를 들어 다음과 같은 함수가 있다.int add(int a..
1. x86 레지스터 구조레지스터는 CPU 내부에서 데이터를 임시로 저장하거나 주소와 실행 위치 등을 관리하는 매우 빠른 저장 공간이다.x86 계열에서는 CPU의 발전에 따라 레지스터가 16비트, 32비트, 64비트로 확장되었다. 대표적으로 AX → EAX → RAX와 같은 관계를 가진다.RAX└── EAX └── AX ├── AH └── AL64비트 환경에서 자주 사용하는 레지스터는 다음과 같다.레지스터주요 역할RAX계산 결과, 함수 반환값RBX일반적인 데이터 저장RCX데이터 저장, 함수 인자RDX데이터 저장, 함수 인자RSI데이터 및 함수 인자RDI데이터 및 함수 인자RSP현재 스택의 위치RBP스택 프레임의 기준점RIP다음에 실행할 명령어의 위치특히 리버싱에서는 RSP,..
프로그램은 어떻게 실행이 되는가C언어로 프로그램을 작성했다고 해서 바로 실행할 수 있는 것은 아니다. 우리가 작성한 소스 코드는 사람이 이해하기 쉬운 형태이기 때문에 CPU가 바로 실행할 수 없다. 그래서 소스 코드를 CPU가 실행할 수 있는 형태로 차례대로 변환하는 과정이 필요한데, 이것이 프로그램의 빌드 과정이다.전체적인 순서는 다음과 같다..c↓전처리↓.i↓컴파일↓.s↓어셈블↓.o↓링크↓.exe 전처리가장 먼저 전처리(Preprocessing)가 진행된다. 예를 들어 다음과 같은 코드가 있다.#include int main() { printf("Hello"); return 0;} 여기서 #include처럼 # 으로 시작하는 전처리 지시문을 처리하고, #define 같은 매크로나 조건부 컴..
컴퓨터는 크게 3가지로 구성되어 있다. CPU, 메모리, 디스크 CPUCPU(중앙처리장치)는 컴퓨터에서 실제 연산과 명령어 처리를 담당하는 핵심 장치이다. 핵심 개념역할 : 프로그램의 명령어를 해석하고 실행하는 컴퓨터는 두뇌 역할클럭(Clock) : CPU 속도는 헤르츠(Hz) 단위의 클럭 수로 표현되며, 1초에 몇 번의 명령어 사이클을처리할 수 있는지를 나타냄 오버클럭(Overclock)제조사가 설정한 기본 클럭보다 강제로더 높여 성능을 끌어올리는 것처리 속도는 빨라지지만, 발열 및 전력 소모가 늘고 CPU에 과부화가 걸릴 위험이 있음 CPU와 다른 구성요소의 관계CPU는 메모리에서 명령어와 데이터를 읽어와 처리하고, 결과를 다시 메모리나 디스크에 저장한다. 즉, CPU 단독으로 동작하는 게 아니라 메..
문제 설명어딘가 이상한 로그인 서비스입니다.SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.chatGPT와 함께 풀어보세요!문제 화면문제 코드 분석로그인은 아래 코드에서 처리된다.userlevel = request.form.get('userlevel')res = query_db(f"select * from users where userlevel='{userlevel}'") 사용자가 입력한 userlevel 값이 SQL문에 그대로 삽입된다.예를 들어 0을 입력하면 실제 서버에서는 다음과 같은 SQL이 실행된다.SELECT * FROM users WHERE userlevel='0' 하지만 입력값을 조작하면 원하는 SQL 구문을 삽입할 수 있다...
문제 설명로그인 서비스입니다.SQL Injection 취약점을 통해 플래그를 획득하세요.플래그는 flag.txt, FLAG 변수에 있습니다.플래그의 형식은 DH{...} 입니다.문제 화면 문제 코드 분석로그인 기능은 아래 코드에서 처리된다.res = query_db(f'select * from users where userid="{userid}" and userpassword="{userpassword}"') 사용자가 입력한 userid 와 userpassword 값이 그대로 SQL 쿼리에 삽입되는 것을 확인할 수 있다.예를 들어 아래와 같이 입력하면userid = adminuserpassword = admin 실제로는 다음과 같은 SQL이 실행된다.select * from users where user..
문제 설명php로 작성된 페이지입니다.알맞은 Nickname과 Password를 입력하면 Step 2로 넘어갈 수 있습니다.Step 2에서 system() 함수를 이용하여 플래그를 획득하세요.플래그는 ../dream/flag.txt에 위치합니다.플래그의 형식은 DH{...} 입니다.문제 화면문제 코드 분석로그인 기능은 아래 코드에서 처리된다.$name = preg_replace("/nyang/i", "", $input_name);$pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") { 사용자가 입력한 input_name 과 ..