일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Javascript
- 웹페이지 만들기
- C언어
- 생활코딩
- 자료구조 복습
- hackctf
- c
- BOJ Python
- PHP 웹페이지 만들기
- Sookmyung Information Security Study
- XSS Game
- Python
- WarGame
- 드림핵
- 숙명여자대학교 정보보안동아리
- 머신러닝
- 백준
- The Loard of BOF
- 숙명여자대학교 정보보안 동아리
- SWEA
- 기계학습
- hackerrank
- c++
- CSS
- 풀이
- BOJ
- 파이썬
- siss
- HTML
- lob
- Today
- Total
목록전체 글 (346)
혜랑's STORY
문제 해결에 필요한 파일들을 모두 다운받고 실행시켜 보았다. 모두 대문자로 입력하였는데 대문자와 소문자가 번갈아가며 출력되는 것을 볼 수 있다. checksec을 통해 보호기법을 확인해 보았는데 64bit 바이너리 파일이고 NX가 걸려있는 것을 확인할 수 있었다. IDA로 확인해보니 main 함수에서 convert_case()와 do_stuff()를 호출하고 있었고 각 함수의 수도코드를 확인하니 do_stuff() 함수에서 s를 __isoc99_scanf("%[^\n]", s); 로 입력을 받아 주고 있다. c언어에서 %[^\n]이 의미라는 바는 개행문자를 제외한 모든 문자를 입력받는 것으로 gets(s); 와 같은 역할을 하게 된다. 즉, 이 코드에서 overflow가 발생하게 된다. GDB Explo..
HackCTF의 Cryptography 중 Smooth CipherText 라는 문제이다. 문제를 열어보니 알아볼 수 없게 문장이 주어졌다. 맨 마지막줄에는 문장의 형식으로 보아 flag도 주어진 것 같다. flag의 형식을 보아 LymoADJ가 HackCTF라는 것을 알 수 있었고, 이를 바탕으로 암호를 찾아 보았다. 그 결과 비즈네르 암호를 알게 되었다. 비즈네르 표는 원문 알파벳 아래에 26가지 사이퍼 알파벳이 나열되어 있고, 사이퍼 알파벳은 한 줄 내려갈 때마다 한 자씩 뒤로 이동하게 되며 1번 줄을 1칸 이동 카이사르 암호 알파벳과 동일하다. 암호문 작성 시 한가지 사이퍼 알파벳만 사용하게 되면 보안성이 낮은 카이사르 알파벳과 동일하여 이를 보완하기 위해 키워드를 이용한다. 키워드는 수신자와 송..
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vector list; int n, temp; cin >> n; for (int i = 0; i > temp; list.push_back(temp); } sort(list.begin(), list.end()); long long result = 0; for (int i = 1; i
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; int dp[1001][3]; int cost[1001][3]; #define MAX 10000000000 int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, result; cin >> n; for(int i=1;i> cost[i][0] >> cost[i][1] >> cost[i][2]; result = MAX; for (int color = 0; color < 3; color++) { for..
(2, 2)부터 (3, 4)까지 합을 구하라는 것은 (2, 2) (3, 4) 위 표와 같이 구간의 합을 구하라는 것이다. code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; int dp[1025][1025]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); memset(dp, 0, sizeof(dp)); int n, m, temp; cin >> n >> m; for (int i = 1; i temp; dp[i][j] = dp[i][j - 1] + tem..
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; int h[1001][3]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); h[0][0] = h[0][1] = h[0][2] = 0; int n; cin >> n; int temp1, temp2, temp3; for (int i = 1; i > temp1 >> temp2 >> temp3; h[i][0] = min(h[i - 1][1], h[i - 1][2]) + temp1; h[i][1] = min(..
이번에 해결 할 문제는 2진수로 표현되어 있는 문자열을 복호화하여 flag를 얻는 문제였다. 01001000 01100001 01100011 01101011 01000011 01010100 01000110 01111011 01100011 01110010 01111001 01110000 01110100 01101111 01011111 01110110 00110010 01110010 01111001 01011111 01100101 01100001 01110011 01111001 01011111 01110000 01110010 00110000 01100010 00110001 01100101 01101101 01111101 파일을 다운받자 위와 같이 이진수로 나타내진 문자열을 발견할 수 있었다. 이를 파이썬 코..
오늘 해결할 문제는 이 사이트의 Basic_FSB 문제이다. 다운로드를 눌러 문제를 다운받아 주었고, chmod를 통해 파일에 실행할 수 있는 권한을 부여하였다. 실행해본 결과 입력한 내용을 그대로 출력해주고 있는 것 같다. checksec을 통해 파일을 열어보니 32bit 바이너리 파일이며 아무런 보호기법도 걸려있지 않았다. IDA를 통해 열어본 결과 바로 vuln() 함수를 호출하고 vuln() 함수는 입력을 받은 것을 바로 출력하고 있었다. 이어 함수 목록을 살펴본 결과 flag 함수가 있었고 이 함수를 실행시켜 flag를 얻는 문제라고 생각하였다. 또한 문제의 이름에서 힌트를 얻어 fsb 취약점이 발생한다는 것을 알 수 있었고 입력으로 %x를 준 결과 2번째 인자를 건너뛰고 %X의 형식으로 출력하..