일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 풀이
- HTML
- 숙명여자대학교 정보보안 동아리
- SWEA
- 웹페이지 만들기
- Python
- WarGame
- c++
- CSS
- c
- BOJ
- lob
- Javascript
- 백준
- 자료구조 복습
- 드림핵
- 머신러닝
- BOJ Python
- 기계학습
- 숙명여자대학교 정보보안동아리
- siss
- The Loard of BOF
- 생활코딩
- 파이썬
- hackerrank
- C언어
- PHP 웹페이지 만들기
- hackctf
- XSS Game
- Today
- Total
목록2021 SISS 21기 활동 (136)
혜랑's STORY
이번에 해결할 문제이다. vuln.c는 다음과 같다. #include #include #include #include #define FLAG_BUFFER 128 #define MAX_SYM_LEN 4 typedef struct Stonks { int shares; char symbol[MAX_SYM_LEN + 1]; struct Stonks *next; } Stonk; typedef struct Portfolios { int money; Stonk *head; } Portfolio; int view_portfolio(Portfolio *p) { if (!p) { return 1; } printf("\nPortfolio as of "); fflush(stdout); system("date"); // TOD..
checksec 64 bit 바이너리 파일이고, NX가 걸려있다. IDA rand() 함수가 사용되어 v5값이 실행될 때마다 바뀌는 것 같다. 그런데 아래 if문을 보면 v5와 v4값이 같아야 flag를 출력할 수 있다. 즉, 랜덤으로 생성되어 v5에 저장될 때 v4에도 저장되어야 할 것 같다. Exploit method rand() 함수의 값과 같은 값을 입력하는 방법을 검색해 보았더니, 동적라이브러리로 rand함수와 똑같은 코드를 작성하고 .so 파일을 만들어서 import 시키면 같은 값을 가져올 수 있다고 한다. time.c 코드 작성 gcc -shared -o time.so -fPIC time.c #include #include #include int solve(); int solve(){ sr..
# checksec 64bit 파일이고, NX가 걸려있다. # IDA read() 함수에서 buf의 크기보다 더 많이 입력받을 수 있어서 overflow가 일어난다. 함수 목록을 살펴보니 __libc_init() 함수가 있다. return-to-csu를 사용하여 문제를 해결하면 될 것 같다. # Debugging [Break Point] 0x4005f6 : main 함수 코드 첫 부분 0x40064b : read() 함수 호출 전 즉, 문자를 72개 이상 입력하면 return address를 덮어쓸 수 있다. # Exploit objdump -M intel -d ./rtc 사용할 가젯 0x4006ba : pop rbx - csu_call csu_call을 실행하고 rbp가 1이면 자동으로 csu_init..
# 문제 # 풀이 int* rotateLeft(int d, int arr_count, int* arr, int* result_count) { *result_count = arr_count; int *result = malloc(sizeof(int)*(*result_count)); int temp; for(int i=0; i
# 문제 # 풀이 int camelcase(char* s) { int cnt=1; for(int i=0; i= 'A' && s[i]
RSA 암호란? 두 개의 키를 사용한다. (공개키, 암호키) 공개키 알고리즘은 누구나 어떤 메시지를 암호화할 수 있지만, 그것을 해독하여 열람할 수 있는 사람은 개인키를 지닌 단 한 사람만이 존재한다. (비대칭키 알고리즘인 이유) RSA는 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있다. 키의 생성 암호화 복호화 문제를 해결하기 위해 values를 눌러 다운받았다. Decrypt my super sick RSA: c: 861270243527190895777142537838333832920579264010533029282104230006461420086153423 n: 13110975325625959918779806198497246067841644301..
message를 눌러보니 다음과 같은 문장이 담긴 파일을 얻을 수 있었다. picoCTF{gvswwmrkxlivyfmgsrhnrisegl} 문제 이름으로 카이사르 암호를 사용한다는 것은 알지만 key값을 몰라 얼마나 shift 해야하는지 모르기 때문에 for문을 통해 가능한 경우의 수를 모두 출력하였다. ciphertext = "gvswwmrkxlivyfmgsrhnrisegl" for key in range(0,26): c = list(ciphertext) for i in range(len(c)): c[i] = chr((ord(c[i]) - ord('a') + key) % 26 + ord('a')) plain = ''.join(c) print(plain) 출력 결과를 보고 가장 flag같은 문장을 골라 ..