일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- siss
- HTML
- 머신러닝
- hackerrank
- Python
- BOJ
- lob
- 숙명여자대학교 정보보안동아리
- c++
- c
- hackctf
- 풀이
- 웹페이지 만들기
- Javascript
- SWEA
- 생활코딩
- 자료구조 복습
- 숙명여자대학교 정보보안 동아리
- BOJ Python
- 기계학습
- WarGame
- 백준
- 드림핵
- CSS
- XSS Game
- The Loard of BOF
- PHP 웹페이지 만들기
- C언어
- Sookmyung Information Security Study
- 파이썬
- Today
- Total
목록전체 글 (346)
혜랑's STORY
오늘 해결할 문제는 이 사이트의 Basic_BOF #2 문제이다. 이전에 Basic_BOF #1을 해결한 적이 있는데, 이 문제의 연장 선이라 생각한다. [HackCTF] Basic_BOF #1 # IDA를 사용하여 bof_basic 살펴보기 s의 크기는 0x34(52) byte 라는 것을 알 수 있다. fgets() 함수의 길이 제한 없이 입력 받는다는 취약점을 이용하여 v5의 값을 "-559038737"로 바꿔주면 shell이 실행되는.. a1ways-hyerang.tistory.com 다운로드를 눌러 파일을 다운받고, chmod를 통해 파일에 실행 권한을 부여해 주었다. chmod +x bof_basic2 AAAA를 입력하니 다음과 같은 출력 이후에 바로 프로그램이 종료하였다. checksec을 통..
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); int T, num, temp; cin >> T; bool flag; for (int tc = 0; tc > num; flag = false; for (int i = 2; i
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; int sum(int list[], int start, int end) { int sum = 1; for (int i = start; i > str; int cnt; for (int i = 0; i < str.length(); i++) { if (str[i] == '.') continue; cnt = 0; for (int j = i; j < str.length() && str[j] == 'X'; j++) ++cnt; if (cnt % 2) { printf("-1"); return 0; } w..
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include using namespace std; int sum(int list[], int start, int end) { int sum = 1; for (int i = start; i > T; int n, m, cnt; string temp; for (int tc = 0; tc > n >> m; cnt = 0; for (int i = n; i
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include using namespace std; int sum(int list[], int start, int end) { int sum = 1; for (int i = start; i > n; int* tree = new int[n]; for (int i = 0; i > tree[i]; int temp = 0, max = -999; for (int i = 0; i < n - 3; i++) { for (int j = i + 1; j < n - 2; j++) { for (int k = j + 1; k < n - 1; k++) { ..
code #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int x, y, p1, p2; cin >> x >> y >> p1 >> p2; for (int i = 0; i p2) p2 += y; else p1 += x; } printf("-1"); return 0; } 점프의 길이가 가장 많이 차이나는 만큼 검사하여도 나오지 않는다면 그 둘은 만날 수 없는 것이다. 문제에서 최소 1에서 최대 100이라 하였으므로 100번 반복해..
오늘 해결할 문제는 이 사이트의 add 문제이다. 역시 실행을 위해 권한을 부여했다. chmod +x challenge 일단 파일을 실행해보자. 그냥 종료된다. checksec으로 보호기법을 확인해보자. 64 bit 바이너리 파일이고, canary와 nx가 걸려있다. IDA로 통해 코드와 함수 목록을 확인해 보았다. 숫자 형식으로 입력을 받고 반환값이 3이 아니면 while문을 탈출하는 코드였다. 함수 목록을 살펴보니 win() 이라는 함수가 있었다. while문을 탈출하고 win으로 이동하여 flag를 출력해야 하는 문제인 것 같다. 일단 숫자를 입력해 보았는데 앞에 입력받은 두 수의 합을 3번째 숫자가 인덱스가 되는 자리에 저장하는 것 같았다. 이때 엄청 큰 수를 입력하거나 작은 수를 입력하게 되면 ..
오늘 해결할 문제는 이 사이트의 sub 문제이다. 다운로드를 눌러 문제를 다운받았고, chmod를 사용하여 파일을 실행할 수 있도록 바꿔주었다. chmod +x challenge 파일을 실행하고 AAAA를 입력하였더니 그냥 프로그램이 종료되었다. checksec을 통해 파일에 어떤 보호기법이 걸려있는지 확인하였다. 64 bit 바이너리 파일이었고 모든 보호기법이 다 걸려있었다. IDA를 통해 코드를 확인해 보았는데 v4랑 v5의 차가 4919가 되면 flag를 출력해준다. 앞에서 친절히 v4와 v5를 입력을 받는데 별 다른 제한이 없기때문에 4918과 -1을 입력 해주었다. 출력할 flag가 없다고 한다. 이제 진짜 서버로 해보자! 성공이다.