1065 문제 > 세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자. 문제풀이 정수형으로 a, b, c를 scanf를 써서 받아온다. if문 3개를 사용해서 %(나머지연산자)로 짝수판별을 진행해 짝수가 맞다면 출력한다. 1065 코드 코드가 맛있지 아니하다 1351 문제 > 시작단과 마지막 단을 입력하면 그 구간의 구구단을 출력하는 프로그램을...
2884 문제 > 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런
수업정리 함수란? 수학에서 x값 하나에 y값이 하나다! => 함수 c에서 일반적으로: 괄호가 있는거 여기에서는 main() : 프로그램 시작함수 printf() : stdio.h library에서 기본으로 제공하는 함수가 있다 함수를 쓰면 int 반환명 no 함수명 int a 매개변수 용어 int a : 매개변수 no(1) : 인자 재귀함수 자기...
1069 = 1096
컴퓨터 구조 프로그램이 어떤 과정을 거쳐 기계 수준에서 실행되는지 (해킹을 하기위한 기본지식으로 필요하다) 운영체제 운영체제는 유저 애플리케이션과 하드웨서 간의 중계자 역할을 한다 >        &emsp
폰 노이만 구조 연산, 제어, 저장의 세가지 핵심기능을 가진 폰 노이만이 만든 구조 중앙 처리 장치 (cpu) 연산을 처리하는 컴퓨터의 뇌 ALU : 산술 놀리연산 제어장치 : cpu 제어 레지스터 : 데이터 저장 기억장치 주기억장치 RAM : cpu가 계산 할때
리버스 엔지니어링 역공학, 역설계 만들어진 장치가 어떻게 작동하는지 분석을 통해 원리를 이해하는 과정 컴파일 과정 소스코드 -> 실행파일 전처리기: 전처리 컴파일러: 어셈블리로 바꿈 어셈블러: 어셈블리를 목적파일 링커: 라이브러리와 목적파일을 병합한다 어셈블리어
문제들의 공통점 풀이할 문제들의 공통점들이다 step 1 > 어셈블리를 c로 디컴파일한다 출력과 입력, 임력을 검증하는 함수들이 나온다 step 2 > 검증하는 함수를 알려준다 step 3 > 검증하는 함수에 사용되는 배열을 알려준다 step 4 > 검증하는 것을 성공시키면 correct가 출력되고 그 값을 플래그 형식에 맞춰서 제
드림핵 문제풀이 정리 recover 분석 stream과 s가 비어있는지 확인한다 enc에서 1바이트씩 읽어서 ptr에 저장후 읽을게 있으면 계속 반복 ptr을 xor v6에 0,1,2,3번째 있는 값들로 돌림xor을 해주고 19를 더한다 풀이 역으로 해서 파일들이 있는 디렉토리에서 컴파일 해준다 후후후 flag.png를 explorer.exe로 열어서...
Debugger 원리 fork()로 프로세스를 복제해 부모와 자식으로 나눈다 execve() 기존 프로세스를 덮고 새 프로그램 실행 ptrace > syscall 26(32bit) tracer가 tracee를 제어하고 관찰하게 해준다 자식프로세스가 부모프로세스가 자신을 추적하기를 커널에 요청한다 자식프로세스 레지스터값을 읽어온다 자식프로세스 가상공간의 ...
안티 디버깅 기법 Artifact-Based 안티 디버깅 디버거가 실행환경에 남기는 흔적을 검사해 디버거 여부를 탐지하는 기법 proc파일 시스템 리눅스 커널이 관리하는 프로세스 및 시스템 정보를 파일 형태로 제공하는 가상 파일 시스템 > 프로세스 상태, 메모리 매핑, 파일 디스크립터등 프로세스 상태를 저장하는 파일 Name : 프로세스 이름 Pid :...
포너블이란 무엇일까? 왜 '포'너블? 채팅에서 owned!가 오타로 o -> p가 되어서 밈이됨 시스템을 own(소유, 장악)한다 해서 시스템 해킹 -> pwnable이라 부른다 목 표 /bin/sh(쉘)를 실행하는 것이다 Buffer Overflow 프로그램이 메모리의 임시 저장 공간 버퍼에 할당된 용량보다 더 많은 데이터를 입력하여 인접한 메모리 공...
Format String(포맷 스트링)은 데이터를 어떤 형식으로 출력하거나 입력할지 지정하는 문자열이다.대표적으로등이 있다.이러한 Format String은 C언어의처럼 이름 끝에 f(formatted)가 붙는 함수들에서 사용된다.예를 들어처럼 같은 함수라도 Forma
배열의 임의의 인덱스에 접근할 수 있게 되었을 때 여러 문제들이 발생할 수 있다.배열은 연속된 메모리 공간을 점유하며점유하는 공간의 크기는 요소의 개수와 요소의 자료형의 크기를 곱한 것이다.예를 들어 int형 배열이 10개의 요소를 가지고 있다면 int의 크기가 4바이
HTML은 접착제이다⇒ 브라우저는 HTML을 열고 JS와 CSS를 가져온다console.log()콘솔에 출력js에서 변수의 이름은 주로 띄어쓰기를 대문자로 표현한다 예) myNamelet : 바꿀 수 있음const : 상수, 고정된 값선언 후 바꿀때 let을 다시 쓰지
콘솔창에서도 간단히 확인해 볼 수 있듯이document도 결국에는 object이다.이 document라는 객체가 웹사이트 문서 전체를 나타낸다.그 아래로 HTML 요소들이 트리 구조를 이루는데 이러한 구조와 이를 조작할 수 있는 객체 모델을 DOM이라고 한다.위 내용을
쉽게 말하면 사용자가 입력하는 것들을 하나로 묶어서 보내는 역할을 한다.action은 form에 입력된 데이터를 어디로 보낼지 정하는 속성이다.여기서는 입력된 데이터를 /login으로 보낸다.method는 데이터를 어떤 방식으로 보낼지 정하는 속성이다.대표적으로GET
여러가지 정보를 나누는 공간을 웹이라고 한다웹에 접근할 수 있게 해주는 소프트웨어클라이언트 -> 내 랩탑서버 -> 요청을 받고 응답하는 컴퓨터쉽게 말하면클라이언트가 서버한테 요청하고서버가 클라이언트한테 응답한다웹의 자원들(웹페이지, 이미지, 파일 등)의 위치를 나타내는
Flask와 SQLite3를 사용해서 간단한 웹 백엔드를 만들어본다.요청을 받으면 응답을 돌려주는 프로그램일반적으로 웹서버는 웹 프레임워크로 개발된다Flask는 Python으로 웹 백엔드를 만들 때 사용하는 웹 프레임워크이다.프레임워크는 프로그램을 더 쉽게 만들 수 있
XSS(Cross Site Scripting) 웹페이지에 악성 스크립트를 삽입하는 취약점 사용자의 입력이 웹페이지 어딘가에 출력된다면 발생할 수 있는 공격기법이다. URL 파라미터나 게시글, 댓글 등이 대표적이다. 단순히 입력값이 보인다고 무조건 XSS인 것은 아
서버를 속여서 서버가 대신 HTTP 요청을 보내게 만드는 취약점사용자가 입력한 URL을 서버가 직접 요청하는 기능이 있다면 발생할 수 있다.공격자는 서버의 권한을 이용해서 외부에서는 접근할 수 없는 내부 서버나 로컬 파일에 접근할 수 있다.공격자가 원하는 주소를 입력하
안녕하세요 저는 객실승무원 B0ramae, 보라매 입니다.저희 Rednose Airlines 는 승객여러분을 환영합니다!빨간코 항공을 이용해주시는 여러.. 아 승객이 아니세요??아 죄송해요.. 이쪽으로 모시겠습니다근데 누구세요?API 서버로의 공격을 절대 금지합니다.도