전체 글 47

[Dreamhack] Return Address Overwrite

문제는 다음과 같다. 서버를 만들어보고 들어가면이렇게 뜨는데 도무지 뭔지 모르겠으니 코드를 보자.코드 구조를 보면, buf 배열의 크기가 고작 0x28 정도인데, %s를 사용하면 엔터나 띄어쓰기를 만나기 전까지 계속 입력받으므로 버퍼오버플로가 발생할 수 있다!또한 위에 컴파일 옵션에 스택 카나리 보호 기법이 해제되어 있고 바이너리의 메모리 주소가 고정되어있는 것을 알 수 있다. 스택 구조는 아마 아래와 같을 것이다.buf (0x28)SFP(8 bytes)RET (8 bytes)입력 데이터 저장이전 함수의 스택 베이스 포인터함수 종료 후 돌아갈 주소우리의 목표는 /bin/sh 를 실행하는 get_shell() 함수다! 저길 노리면 쉘을 얻을 수가 있다.즉, 버퍼오버플로로 RET 영역을 get_shell()..

Security/Pwnable 2026.03.30

[Dreamhack] bof

제목부터 버퍼오버플로우문제라고 광고 중이다.실행해보면 웬 고양이가 뮤뮤거리며 나를 반겨준다. (귀엽다) 파일에 따로 C파일이 없어서 마찬가지로 IDA로 디컴파일해서 보자.보면 scanf에서 최대로 144바이트까지의 값을 받고 있는 것을 확인할 수 있다.근데 v4 배열은 128바이트 크기를 가지고 있다! 거기에 v4를 입력받은 다음 바로 v5 변수가 사용되므로, v4 값을 버퍼오버플로우로 넘치게 만들면 v5 변수의 내용을 내가 원하는 대로 덮어쓸 수 있겠다. 또한 flag는 /home/bof/flag 에 있다고 했으므로 v5 영역에 들어갈 값이 바로 저 위치 문자열이 될 것이다.이를 바탕으로 익스플로잇 코드를 작성해보자.아까 전에 쓴 코드보다 더 쉽다. 살짝만 수정해서 오버플로될 곳에 주소가 들어가도록 만..

Security/Pwnable 2026.03.30

[Dreamhack] Basic_exploitation_001

문제는 다음과 같다. 우선 파일부터 다운받아보자. 압축 파일 내의 C 파일을 보면 저렇게 생겼다. 저중에서도 cat flag 명령을 내는 read_flag() 함수가 중요할 것 같다. 이걸 실행시키는 게 목표일 것 같은데, 어디에도 read_flag()를 실행하는 명령은 없다.main() 함수를 보면 gets 함수가 보인다. 얘는 입력값의 길이를 검증하지 않아서 128바이트보다 큰 데이터를 입력하면 버퍼오버플로가 일어나는 취약점이 있다고 했었다.즉, gets 함수에 버퍼오버플로우를 이용하면 read_flag에 닿을 수 있지 않을까?! 32비트인 x86 환경에서 main 함수의 스택 프레임 구조는, buf (128 bytes)SFP (4 bytes)RET (4 bytes)gets() 입력이 저장되는 곳이전..

Security/Pwnable 2026.03.30

[4주차] SQL 기초 (JOIN, CREATE, ALTER, DROP)

1. JOIN 검색 - JOIN 검색 :: 여러 개의 테이블을 연결해 데이터를 검색하는 것 - FROM 절에 검색에 필요한 모든 테이블을 나열하고, WHERE 절에 조인 속성의 값이 같아야 함을 의미하는 조인 조건 제시 - 파스타집.주문고객, 일식집.주문고객 처럼 같은 속성의 값이 중복될 수 있으니 테이블 이름도 같이 표시함. - 카티션 프로덕트 :: 한 테이블의 행을 다른 테이블 행에 연결해 두 개 이상의 테이블을 결합한 것 (별로 안 좋은 방법이다. 비추천!)질의#22 : 고객과 고객의 주문에 관한 데이터를 모두 나타내세요질의#23 :: 고객과 고객의 주문에 관한 데이터를 고객별로 정렬하여 나타내세요질의#25 : 고객별로 주문한 모든 도서의 총판매액을 구하고, 고객별로 정렬하세요질의#26 : 고객의 ..

Develop/DataBase 2026.03.28

[최신 보안 사례 조사]

[1] 리드코프 자회사 '앤알캐피탈대부' 대규모 개인신용정보 해킹 (2026.03.)1. 사건 개요2026년 3월 23일, 국내 1위 대부업체 리드코프의 자회사인 앤알캐피탈대부에서 심각한 내부 시스템 해킹 사고 발생단순한 이름과 연락처를 넘어 주민등록번호, 신용점수, 대출 계좌 및 승인 금액 등 치명적인 금융 민감 정보가 대량 유출됨사안의 심각성으로 인해 금융감독원이 즉각 현장 검사에 착수함2. 공격 방식 및 근본 원인 (Root Cause)정확한 침투 경로는 당국의 수사가 진행 중이나, 금융권 사고의 전형적인 경계망 방어(Perimeter Defense) 우회 및 내부망 수평 이동(Lateral Movement)으로 분석됨공격자는 임직원의 탈취된 VPN 계정, 피싱(Phishing), 혹은 외부로 노출..

Security 2026.03.23

[3주차] SQL 기초 (SELECT문)

1. SELECT 문 - 데이터베이스 테이블에서 원하는 데이터를 가져오는 가장 기본 명령어 질의#1: 모든 도서의 이름과 가격을 검색하세요.- SELECT 뒤에는 추출할 열 이름 지정 (모든 열을 가져올 때 :: * 기호 사용)- FROM 뒤에는 데이터를 빼올 대상 테이블 이름 작성 질의#2: 모든 도서의 도서번호, 도서이름, 출판사, 가격을 검색하세요. 질의#3: 도서 테이블에 있는 모든 출판사를 검색하세요.2. WHERE 질의#4: 가격이 20,000원 미만인 도서를 검색하세요. 질의#5: 가격이 10,000원 이상 20,000원 이하인 도서를 검색하세요.2.1.집합 조건 (IN, NOT IN) 질의#6: 출판사가 '굿스포츠' 혹은 '대한미디어'인 도서를 검색하세요. - IN 집합 조건 사..

Develop/DataBase 2026.03.21

[Dreamhack] baby-bof

문제는 다음과 같은데, 제목에서처럼 알 수 있듯이 버퍼오버플로우를 일으켜 코드를 실행시키는 문제일 것임을 예상할 수 있다.아니나다를까, C코드를 보면,친절하게도 38줄에 win() 함수는 main 함수가 실행시키고 있지 않다고 말까지 해준다.win() 함수를 살펴보면, 이놈이 바로 flag를 출력시켜주는 함수다! 그러니까 얘를 어떻게든 실행시켜야 한다.즉, 버퍼오버플로우를 이용해보자! win 함수 이름을 써보면 이상한 숫자와 영어들이 막 나온다. 버퍼오버플로를 일으키려면 주소를 찾아야 되겠다. ida freeware로 실행파일을 넣어서 텍스트 보기를 해보면.. win 함수의 주소를 알 수 있다. 저기 보면 40125b라고 나와 있다.그럼 이 주소를 hex value로 넣으면 되겠다.name을 입력하면 ..

Security/Pwnable 2026.03.16

[Dreamhack] shell_basic

이전 문제와 마찬가지로 풀었는데 풀이를 작성하려니 토큰이 없어서 캡처를 못 하게 되어버렸다..;예전엔 토큰 없었던 것 같은데 앞으론 신중하게 풀어야겠다.. 나는 돈이 없으니까 🫠 문제의 다른 함수들은 execve, execveat 시스템 콜을 막는 함수이므로 main() 함수만 보면 된다.접속해서 nc 주소 포트번호 를 입력하면 shellcod: 라는 문구가 출력되고 입력을 기다리고 있는 것을 알 수 있다.일반적으로는 쉘 획득할 때 execve 시스템 콜을 많이 쓰지만 여기서는 제한시켜두었으므로 다른 방법을 사용해야 한다. 사실 처음엔 그냥 cat > flag_name_is_loooooong 하려고 했는데 안 됐다... 그리고 타자가 느려서 제한시간 안에 다 칠 수도 없다!! 드림핵 페이지에 친절하게도..

Security/Pwnable 2026.03.16

[2주차] 관계 데이터 모델 (DBMS)

1. 관계 데이터 모델의 개념1-1. 릴레이션- 관계 데이터 모델 : 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델 - 특징 : 하나의 개체에 관한 데이터를 하나의 릴레이션에 저장- 릴레이션 :: 행과 열로 구성된 2차원 테이블 형태- 본문 수록 예시: 1) 도서 릴레이션: (도서번호, 도서이름, 출판사, 가격) 속성으로 구성됨. 2) 주문 릴레이션: (도서번호, 고객번호, 판매가격, 주문일자) 속성으로 구성됨. - 관계(Relation) :: 1) 릴레이션 내의 관계: 개체 내부의 데이터 집합 (투플 간의 관계). 2) 릴레이션 간의 관계: 공통된 식별 가능 값(예: 도서번호)을 이용한 연결 관계.- 핵심 구성 요소 및 정의: 1) 속성(Attribute..

Develop/DataBase 2026.03.14