일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- hackctf
- Python
- 파이썬
- lob
- c++
- 머신러닝
- SWEA
- HTML
- BOJ
- 자료구조 복습
- C언어
- Sookmyung Information Security Study
- Javascript
- 숙명여자대학교 정보보안동아리
- WarGame
- 생활코딩
- 웹페이지 만들기
- The Loard of BOF
- 숙명여자대학교 정보보안 동아리
- 기계학습
- c
- CSS
- 풀이
- PHP 웹페이지 만들기
- 드림핵
- hackerrank
- XSS Game
- BOJ Python
- siss
- Today
- Total
목록전체 글 (346)
혜랑's STORY
IDA로 rtl_world 살펴보기 // main() 함수 dlsym() 함수는 c언어에서 사용하는 함수로 두 번째 인자의 주소를 첫 번째 인자(라이브러리)에서 찾아서 변수에 저장한다. 즉, system의 주소는 v6에 "/bin/sh"의 주소는 s1에 저장된다. case 1을 보아 보호기법이 전혀 존재하지 않는 것 같다. case 2는 Get_Money() 함수를 실행시킨다. case 3은 gold를 1999만큼 빼고, system()의 주소를 노출(leak)한다. case 4는 gold를 2999만큼 빼고, shell("/bin/sh")의 주소를 노출(leak)한다. case 5는 buf의 크기보다 더 많이 입력을 받는다.
[출처] http://forensic-proof.com/ https://k-dfc.tistory.com/34 0. 저장장치 구조 모든 메모리는 바이트의 배열을 제공하며, 각 바이트는 주소값을 가지고 있다. 폰 노이만 구조 시스템에서 실행되는 전형적인 명령-실행 사이클에서는 먼저 메모리에서 명령을 가져와 그 명령을 명령 레지스터(Instruction register; IR)에 저장하고 명령을 해독한다. **주기억장치**는 모든 것들을 전량 기록하고 전력이 차단되면 해당 값들이 다 사라지는 **휘발성 메모리**이다. 이러한 한계를 극복하려면 다른 저장장치의 힘을 빌리는데 이를 **보조기억장치**라고 한다. (SSD, HDD 등) **SSD, HDD에서는 메모리에 적재되는 시점까지 거의 대부분의 프로그램이 저..
2021년도 1학기 5주차 과제(자료구조 복습용 tree) 1. InOrder Tree: Inorder Traversal | HackerRank Print the inorder traversal of a binary tree. www.hackerrank.com [설명] Inorder(중위 순회)는 루트의 왼쪽 서브 트리를 방문한 뒤 루트를 방문하고 오른쪽 서브 트리를 가장 나중에 방문한다. 왼쪽 서브 트리와 오른쪽 서브 트리에 대해서 재귀적으로 이 과정을 반복한다. 풀이 void inOrder( struct node *root) { if(root){ inOrder(root->left); printf("%d ",root->data); inOrder(root->right); } } root가 존재할 때, 왼..
자료구조 복습용 sorting 문제입니다. -문제 Quicksort 1 - Partition | HackerRank Perform the first step of Quicksort: partitioning an array. www.hackerrank.com 퀵 정렬을 할 때, pivot을 arr[0]으로 사용하여 left, equal, right을 분류하고 그 리스트를 반환한다. - 풀이 int* quickSort(int arr_count, int* arr, int* result_count) { int *result = (int*)malloc(sizeof(int)*arr_count); int *left = (int*)malloc(sizeof(int)*arr_count); int *equal = (int*..
자료구조 복습용 search 문제입니다. - 문제 www.hackerrank.com/challenges/insertionsort2/problem Insertion Sort - Part 2 | HackerRank Code Insertion Sort itself. www.hackerrank.com 배열의 원소 중 1개를 축으로 잡고 양쪽 원소의 합이 같으면 "YES"를 출력하고 아니면 "NO" 출력하기 - 풀이 char* balancedSums(int arr_count, int* arr) { int left_sum = 0, right_sum = 0; if (arr_count == 1) return "YES"; for (int i = 1; i < arr_count; i++) right_sum += arr[i]..
# checksec을 통해 보호기법 확인하기 -> 확인해본 결과 64bof_basic은 RELRO와 NX가 걸려있다. 따라서 RET 변조를 통해 문제를 해결해야 할 것 같다. #IDA를 사용하여 64bof_basic 살펴보기 s의 크기는 0x110(272)byte 라는 것을 알 수 있다. -> 함수 목록을 살펴보니 "callMeMaybe"라는 함수가 있는 것을 볼 수 있다. callMeMaybe 함수를 살펴보니 쉘을 실행시키는 함수였다. 이 함수의 주소(0x400606)를 전달해주면 쉘을 실행할 수 있을 것 같다. #Payload 앞에서 확인한 내용을 바탕으로 아래와 같이 Exploit code를 작성할 수 있다. from pwn import * p = remote('ctf.j0n9hyun.xyz', 3..
# IDA를 사용하여 bof_basic 살펴보기 s의 크기는 0x34(52) byte 라는 것을 알 수 있다. fgets() 함수의 길이 제한 없이 입력 받는다는 취약점을 이용하여 v5의 값을 "-559038737"로 바꿔주면 shell이 실행되는 것 같다. # buf의 시작 주소 알아내기 fgets()를 호출하고 난 다음에 bp를 걸면 buf의 위치를 알 수 있다. [ebp-0xc](v5)가 0xdeadbeef여야 원하는 값을 볼 수 있다. 실행 해보자. 앞에서 'A'를 넣어주었기 때문에 41이 등장하는 부분이 buf의 시작 주소라는 것을 알 수 있다. v5가 0x04030201가 출력되었고, 'A'를 넣어서 buf의 위치를 확인할 때도 뒤에 0x04030201이 들어있었다. 따라서 버퍼오버플로우를 일..
1. WIRESHARK란? 와이어샤크는 자유 및 오픈 소스 패킷 분석 프로그램이다. 네트워크의 문제, 분석, 소프트웨어 및 통신 프로토콜 개발, 교육에 쓰인다. 2. WIRESHARK INTERFACE 2.1 Menu File - Open : 저장된 패킷 파일(dump)을 연다. - Savd : 수집한 패킷을 파일로 저장 - Merge : 수집한 여러 개의 패킷 파일을 선택해서 하나로 합친다. - Export : 특정 패킷만 내보낸다. Edit - Find Packet : 특정 패킷을 찾을 수 있다. - Mark/Unmark Packet : 특정한 패킷을 찾는 방법. mark 기능으로 표시 가능 - Ignore : 불필요한 패킷을 무시할 수 있다. - Preferencces : 패킷 프레임의 레이아웃 및..