분류 전체보기 118

N00bCTF Forensic - Where_is_flag

2. Where_is_flag Image file broken.. Restore please..!! 이미지가 뽀사져서 이걸 복구해달라 합니다.... 하지만 한번 볼까요? 역시나 안 보입니다 그럼 HxD로 까봅시다. HxD을 이용한 파일 분석 분명 PNG 파일인데 파일 헤더시그니처가 없습니다. 그럼 푸터 시그니처는 있는지 보겠습니다. PNG 파일이지만 푸터 시그니처가 FF D9인걸로 보아 이미지 파일 중 JPG파일인것 같습니다. 복구 과정 1. 헤더 시그니처로 파일 앞부분을 변경 2. 파일의 확장자를 JPG로 변경 결과

Write-up/N00bCTF 2020.05.27

Abex Crack me #2.2

이전 차시에 했던Abex Crackme #2 문제를 다른 방법으로 풀어보았다 이렇게 떴었는데 이번에는 조건분기문을 고쳐서 프로그램을 패치까지 해보겠다. 먼저 정상적으로 작동할 때 나오는 문자열을 찾아 브레이크 포인트를 걸어둔다 그 이후에 je 분기문을 바꾸면 된다 je는 (jump if equal)로써 값이 같을경우에 해당하는 데 ZF(zero Flag)가 1일때 동작한다 그전에 현재의 흐름을 알아야 하는데 계속 Wrong Error가 뜨는 이유가 TEST ax,ax에서 연산 후 비교를 했을 때(Test는 AND 연산을 한다. 해서 결과가 0이 나오면 ZF=1이 됌) 두 값이 같아서 0으로 결과값이 도출되어 je분기문의 원리에따라 주소가 403408로 이동이 되고 Error가 뜨는 것이다 그러므로 JE구..

Write-up/Wargame 2020.05.01

Abex Crack me #2.1

기본적으로 한 프로그램이 주어진다 간단히 프로그램의 작동이 어떤지 알아보기 위해서 Name과 Serial을 채워 넣었다 check버튼을 누르자 마자 Serial이 틀렸다고 나온다 하지만 그 어떤 값을 넣어도 다 틀리다고 나오니까 여기서 시간낭비는 하지 말자 오늘도 x64dbg로 이 프로그램을 다 파헤쳐보겠다. 오늘은 거의 모든 인터페이스를 다 볼 거다 F9를 누르면 함수의 시작주소가 401238로 나온다 우선 아까 우리가 봤던 Error창에 뜨던 문자열중 하나인 Wrong을 찾아보자 어셈블리코드 창에서 마우스 오른쪽 >> 다음을 찾기 >> 모든 모듈 >> 문자열 참조를 누르면 이런 창이 뜨는데 검색창에 wrong을 쓰면 된다 더블클릭을 하면 그 주소 어셈블리 코드로 바로 간다 이번에도 빨간 박스 안에 j..

Write-up/Wargame 2020.05.01

Abex Crack me #1

리버스 엔지니어링을 본격적으로 공부하기 위해 가장 난이도가 낮은 문제들부터 풀기로 했다. 먼저 문제의 실행파일을 실행 했을 때의 결과이다 HD를 CD-Rom으로 인식하게 해달라고 한다 이후에 확인을 누르면 에러가 뜨면서 CD-ROM이 아니라고 말한다 나는 이 실행파일을 x64dbg로 확인해 볼 것이다 우선 파일을 디버거프로그램에 올리면 이렇게 뜬다 내가 문제를 풀면서 이용했던 정보가 있는 부분은 저 빨간 박스이다. F9를 누르면 프로그램이 실행이 된다. EntryPoint부분을 보면 "Make me think your HD is a CD-Rom"이라는 문구가 써져있다 이게 앞에서 제일 처음 봤던 이 사진의 문구이다. 따라서 이 프로그램은 1번줄을 보여준 뒤 확인버튼을 누르면 2번이나 3번줄의 문구를 출력..

Write-up/Wargame 2020.04.30

객체 지향 과제 rep4

과제: 2개의 헤더 파일 작성(원의 면적을 계산하는 프로그램 ,원의 둘레를 계산하는 프로그램) 메인 프로그램 작성 - PI(3.141592)를 const로 메인 프로그램에서 선언 - 원의 반지름을 입력받아 면적과 원의 둘레를 계산하여 출력(무한 루프) - 입력한 반지름이 0일 때 프로그램 종료 먼저 헤더파일부터 만들었다. double area(int r) { double area = r*r*PI; cout

STUDY/Assignment 2020.04.25

객체지향 프로그래밍 중간고사 실습대비 연습문제

#include #include using namespace std; #define STUDENT 5 const char *head[] = { "학생 신체 현황 자료(입력순)","학생 신체 현황 자료(성명순)" }, *underline = "==========================="; const char *name[] = { "김철수","이영희","홍길동","한수만","박문수" }; int birth[] = {1990,1989,1991,1988,1990}; double height[] = { 172.5,187.2,174.6,182.5,170.3 }; double weight[] = { 67.2,78.5,75.1,80.6,68.6 }; int main() { int i,j; int flag, id..

STUDY/Assignment 2020.04.24