일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C언어
- c++
- BOJ
- PHP 웹페이지 만들기
- 자료구조 복습
- 생활코딩
- BOJ Python
- CSS
- The Loard of BOF
- 머신러닝
- 풀이
- Javascript
- WarGame
- Sookmyung Information Security Study
- 파이썬
- XSS Game
- 숙명여자대학교 정보보안 동아리
- c
- HTML
- 백준
- 웹페이지 만들기
- 드림핵
- lob
- hackctf
- 기계학습
- 숙명여자대학교 정보보안동아리
- siss
- Python
- hackerrank
- SWEA
- Today
- Total
목록분류 전체보기 (346)
혜랑's STORY
source를 다운받아서 살펴보자. asm1: :push ebp :mov ebp,esp :cmp DWORD PTR [ebp+0x8],0x71c :jg 0x512 :cmp DWORD PTR [ebp+0x8],0x6cf :jne 0x50a :mov eax,DWORD PTR [ebp+0x8] :add eax,0x3 :jmp 0x529 :mov eax,DWORD PTR [ebp+0x8] :sub eax,0x3 :jmp 0x529 :cmp DWORD PTR [ebp+0x8],0x8be :jne 0x523 :mov eax,DWORD PTR [ebp+0x8] :sub eax,0x3 :jmp 0x529 :mov eax,DWORD PTR [ebp+0x8] :add eax,0x3 :pop ebp :ret 문제에서 0x8b..
이번에 해결할 문제이다. crackme.py를 다운받아 주었다. # Hiding this really important number in an obscure piece of code is brilliant! # AND it's encrypted! # We want our biggest client to know his information is safe with us. bezos_cc_secret = "A:4@r%uL`M-^M0c0AbcM-MFE07b34c`_6N" # Reference alphabet alphabet = "!\"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+ \ "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" d..
이번에 해결할 문제이다. 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]
# 문제 # 풀이 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include using namespace std; int d[1000001] = { 0, 0, 1, 1 }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; for (int j = 4; j d[j / 2] + 1) d[j] = d[j / 2] + 1; if (j % 3 == 0 && d[j] > d[j / 3] + 1) d[j] = d[j / 3] + 1; } printf("%d\n", d[n]); return 0; } 1에서 ..