일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹페이지 만들기
- 파이썬
- Sookmyung Information Security Study
- hackerrank
- HTML
- The Loard of BOF
- siss
- 드림핵
- c
- hackctf
- 머신러닝
- Javascript
- XSS Game
- SWEA
- 자료구조 복습
- CSS
- 백준
- Python
- 생활코딩
- BOJ Python
- BOJ
- 풀이
- 숙명여자대학교 정보보안동아리
- c++
- PHP 웹페이지 만들기
- 숙명여자대학교 정보보안 동아리
- C언어
- 기계학습
- WarGame
- lob
- Today
- Total
목록분류 전체보기 (346)
혜랑's STORY
이번주에 해결할 문제는 Dreamhack Wargame에 있는 house_of_force 문제이다. 앞서 house_of_force 기법에 대하여 학습한 내용을 떠올리며 문제를 해결하면 될 것 같다. 문제 정보를 통해 32bit 바이너리 파일이며, Canary, NX, Partial RELRO가 설정되어 있는 것을 알 수 있다. 문제 파일을 다운로드 받아 주었다. force.c // gcc -o force force.c -m32 -mpreferred-stack-boundary=2 #include #include #include #include #include int *ptr[10]; void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize..
House of Force House of Force 기법은 top chunk의 size를 조작함으로써 임의의 주소에 힙 청크를 할당 할 수 있는 공격 기법이다. 이 기법을 사용하기 위해서는 공격자가 top chunk의 size를 조작하고, 원하는 크기의 힙 청크를 할당 할 수 있어야 한다. 아래는 top chunk를 처리하는 _int_malloc 코드의 설명이다. static void * _int_malloc (mstate av, size_t bytes) { INTERNAL_SIZE_T nb; /* normalized request size */ ... mchunkptr remainder; /* remainder from a split */ unsigned long remainder_size; /* i..
4주차 자유문제 Prepare > Mathematics > Algebra 풀이 문제에서 구해야하는 Fixed Profit 계산하는 수식은 다음과 같다. bugger + fixed_profit = x soda + fixed_profit = y bugger + soda + fixed_profit = z -> fixed_profit = (x + y) - z 따라서 처음 주어진 두 값의 합에서 마지막 값을 빼면 Fixed_Profit이다. 전체적인 코드는 다음과 같다. int profit(int b, int s, int c) { // Return the fixed profit. return (b + s) - c; } 실행 결과는 다음과 같다.
4주차 자료구조 복습 Prepare > Algorithms > Implementation 풀이 예산 내에서 살 수있는 가장 높은 금액 구성으로 물건을 구매하는 것이 목표이다. 따라서 가질 수 있는 모든 경우의 수를 계산해 주었다. 이때 예산 내에서 살 수 있는 구성이 없다면 -1을 리턴하면 된다. 전체적인 코드는 다음과 같다. int getMoneySpent(vector keyboards, vector drives, int b) { int maxB = -1; for(int i=0; i
무선 통신 프로토콜의 종류 1. Zigbee 사물인터넷에서 많이 사용하는 연결 기술이다. 특히 저전력, IPv6, *Meshing 등 작으면서 간단한 프로토콜을 가지고 다양한 기능을 지원한다는 장점이 있다. (가격도 매우 저렴함) 이러한 장점 덕에 산업용 제어, 임베디드 센서, 의학자료 수집, 화재 및 도난, 빌당 자동화 홈 오토메이션 등의 분야에서 널리 사용되고 있다. 그러나 서로 호환이 되지 않는 다양한 프로파일의 존재와 보안이 취약하다는 단점이 있다. *Meshing : 각각의 노드가 네트워크에 대해 데이터를 리레하는 네트워크 토폴리지 2. Wi-Fi Zigbee 대비 높은 전력 소모와 가격, 조작의 복잡성 등의 단점이 있다. 그러나 스마트폰을 비롯한 다양한 기기에서 널리 이용되는 보편성과 높은 보..
1️⃣ checksec 64 bit 바이너리 파일이고, Partial RELRO와 Canary, NX가 설정되어 있다. 2️⃣ IDA main() player의 이름을 입력받고, 메뉴에 있는 info, malloc, free, key, exit 중 입력받은 번호를 실행하고 있다. fastbin dup을 사용하여 풀이하는 문제인 것 같다. 역시 player는 전역 변수로 선언되어 있다. Malloc() 위 코드는 0x20 크기의 힙을 할당하고 데이터를 입력할 수 있다. Free() Key() 최종적으로 실행하여 셸을 획득할 것이다. 이때 꼭 필요한 target 또한 전역 변수로 선언되어 있다. 3️⃣ Exploit Scenario 검증 우회를 위해 두 개의 힙을 할당한다. old와 p 포인터를 다르게 하여..
fastbin dup consolidate fastbin dup consolidate는 fastbin에 들어간 힙 청크들을 병합시켜 smallbin에 넣어 Double Free 검증을 우회하는 기법이다. smallbin에 들어간 fastbin 크기의 힙 청크를 한 번 더 해제하면 다시 fastbin에 들어가기 대문에 검증을 우회할 수 있다. _int_malloc #define have_fastchunks(M) (((M)->flags & FASTCHUNKS_BIT) == 0) else { idx= largebin_index (nb); if (have_fastchunks (av)) malloc_consolidate (av); } 위 코드를 확인해보면, malloc 함수 내부에서 largebin 크기의 할당 ..
fastbin dup fastbin dup은 Double Free 버그를 이용하여 fastbin freelist를 조작해 이미 할당된 메모리에 다시 힙 청크를 할당하는 공격 기법이다. 이를 이용하면 fastbin의 FD 포인터를 조작해 임의 주소에 힙 청크를 할당할 수 있다. 그러나 이를 방지하기 위해 FD 포인터가 가리키는 영역의 size와 할당하려는 bin의 크기를 비교하는 코드가 존재한다. 해당 코드를 이해하고 우회하는 방법 또한 알아보자. fastbin_dup.c // gcc -o fastbin_dup fastbin_dup.c #include #include int main(void){ char *ptr1 = (char *)malloc(0x40); char *ptr2 = (char *)malloc..