일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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언어
- 보안
- 스트림암호
- 머신러닝
- 항등함수
- 딥러닝
- 파이썬
- 소프트맥스함수
- 신경망파이썬
- 딥러닝파이썬
- 정보보안
- 신경망 학습
- 달고나bof
- FTZlevel10
- C언어 알고리즘
- BOJ
- 밑바닥부터시작하는딥러닝
- C언어알고리즘
- 인공지능
- 버퍼오버플로우
- BOF
- 파이썬신경망
- 8086CPU레지스터
- 백준
- 백준알고리즘
- 신경망구현
- 알고리즘
- 활성화함수파이썬
- 신경망
- Today
- Total
목록분류 전체보기 (235)
HeeJ's
문제 Hello World!를 출력하시오. 입력 없음 출력 Hello World!를 출력하시오. print("Hello World!")
welcome_rev파일을IDA로 열어 주었다. main 함수에서 답이 맞는지 틀린지 분기되는 부분인데, 입력 값과 답을 비교하기 위해 check_password라는 함수가 call 되는 것을 볼 수 있었고, check_password 함수의 그래프를 보면 뭔가 이상한 값이 있는 걸 찾을 수 있었다. 이 값을 더블 클릭해서 자세히 보면 문자열 마지막 =로 끝나는 것을 통해 base64로 인코딩 된 것을 알 수 있었다. (base64 인코딩 과정에 '='문자가 생성되는 이유; 비트 수를 맞춰 원본 바이너리 데이터가 없던 비트가 생기는 것을 방지) 이 문자열을 온라인 디코더로 돌려주면 Flag를 찾았다.
Strncmp라는 파일을 다운받아 기드라로 열어 main함수를 찾아 주었다. main 함수를 보면 변수들을 선언하고, 값을 hex로 넣어주고, scanf로 값을 받아 strcmp_함수로 값을 비교해 일치하면 Good game 일치하지 않으면 Always dig deeper가 뜨는 것 같다. 그래서 strcmp_ 함수를 더블 클릭 해보면 입력되는 parameter 값이 char 형인걸 보아 hex값으로 입력되었던 값을 ASCII코드로 변환해주어야 하는 것 같다. 그리고 그 입력된 값들을 일일이 key 값과 XOR연산 하면서 일치하는지 확인하는 것 같다. key 값은 무엇일까? key 변수를 더블 클릭 해보면 strcmp_함수와 check함수에서도 나오는 걸 확인하고, check 함수를 찾아 들어가봤다. 이..
툴로 소스코드 빌드 -> 실행 파일 생성 -> 기계어 변환 기계어를 보려면? 디버거를 통해 어셈블리 언어로 번역 OllyDbg? - 바이너리 코드 분석을 위한 x86 디버거, 소스 코드 없을 때 유용함 - 레지스터 추적, 함수, API 호출, Switch문, 표(table), 상수 그리고 문자열 인식 - 오브젝트 파일과 라이브러리에서 루틴들의 위치를 찾아 줌 code window에서 code는 어셈블리 코드이다. 출처 1. www.ko.wikipedia.org/wiki/OllyDbg
문제 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄부터 N번째 줄 까지 차례대로 출력한다. a = int(input()) for i in range(a): print(i+1)
문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 입력 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0) 출력 점 (x, y)의 사분면 번호(1, 2,..
문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 입력으로 주어진 글자의 아스키 코드 값을 출력한다. #define _CRT_SECURE_NO_WARNINGS #include int main() { char n; scanf("%s", &n); printf("%d", n); return 0; }
리버싱에 대해서 공부를 시작하려고 하는데, 혼자 책을 읽고 문제만 풀기엔 너무 막연해서? 집중도 잘 안되고... 블로그에 내가 공부한 내용들에 대해 기록해보면서 잔잔하게 공부를 해보려고 한다. 최근 리버싱과 관련된 활동들을 시작했고, 생 기초도 없던 나이기에 정말 버겁게 느껴진다. 이제부터라도 천천히 조금씩 시작하면 언젠가 나도 리버싱 문제들을 가뿐하게 풀 수 있으리라 생각하며 공부에 사용한 자료; 이승원님의 "리버싱 핵심 원리" 1. 리버스 엔지니어링(Reverse Engineering, RE: 역공학) 제품 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하여 문제를 해결 특정한 기능의 기계, 혹은 프로그램의 라이브러리의 내부 구조를 알 수 없을 때, 뜯어서 분석한 결과를 가지고 동..