| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 침입 차단 시스템(IPS)
- TryHackMe
- AWS IAM Role
- reversing.kr
- C
- 네트워크
- 운영체제
- AWS 3 Tier Architecture
- network
- Amazon S3
- python
- AWS 보안 사고 사례 모음
- AWS
- AWS Active Directory
- AWS 사고 사례 분석
- 드림핵
- AWS 아키텍처 분석
- IAM Federation
- AWS 침해사고 사례 분석
- 리버싱
- dreamhack
- reversing
- 프로그래머스
- terraform
- AWS 보안 아키텍처 분석
- AWS 인프라 분석
- programmers
- AWS 인프라 아키텍처
- AWS 침해 사고 사례 분석
- operating system
- Today
- Total
목록Reversing/Dreamhack (24)
lhywk 님의 블로그
문제 풀이해당 바이너리를 실행하면 입력을 받고 뭔가의 숫자들을 출력합니다. 220c6a33204455fb390074013c4156d704316528205156d70b217c14255b6ce10837651234464e문제에서는 이 output을 함께 제공해 줬습니다.우리의 입력값을 넣었을 때 저 output이 나오면 올바른 값이 되는 것 같습니다. 먼저 IDA로 소스코드를 확인해 보겠습니다.1. Main 분석1. ptr에 0x64만큼 메모리를 할당합니다.2. fgets 함수로 최대 100글자를 입력받습니다.3. strcspn 함수로 입력값에서 개행 문자를 찾아서 널 문자로 바꿔버립니다. fgets에서 엔터키를 없애버리는 용도로 쓰이겠네요.4. v3에 입력값의 길이를 저장합니다.5. sub_1209 함수를 ..
해당 바이너리를 실행해 보겠습니다.Please find the flag~라는 문자열을 출력합니다. IDA를 통해 소스코드를 분석해 보겠습니다.main 함수는 puts 함수로 아까 봤던 문자열을 출력하네요.많은 함수가 존재하고please~를 계속 출력하네요.String을 확인해 보겠습니다. rdata 섹션에서 DH를 봤다..? 설마 플래그인가 했는데 정답입니다 ㅋㅋ
문제무슨 뜻일까요? 궁금해진 카루가 프로그램을 분석해봅니다.플래그를 알려주는 기능이 숨겨져 있었군요.영문자, 숫자, 특수문자를 적절히 사용하여 플래그를 획득해 봅시다.문제 풀이문제에 주어진 바이너리를 실행하면 에러 문구가 출력됩니다.IDA를 통해 소스코드를 분석해 보겠습니다.int __fastcall main(int argc, const char **argv, const char **envp){ __int64 v4; // rax __int64 v5; // rax __int64 v6; // rax __int64 v7; // rax int v8; // ebx __int64 v9; // rax unsigned int v10; // eax __int64 v11; // rax char v12; /..
문제이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요.문제 풀이해당 바이너리를 실행해 보겠습니다.올바른 입력값을 입력해야 Correct를 출력해 줍니다.IDA를 통해 코드를 분석해 보겠습니다. 1. 정적 분석sub_140001000의 리턴값이 참이어야 Correct를 출력합니다.반복문을 총 24번 돌면서7번째 줄에 if문의 조건을 만족하지 않아야 1을 반환합니다.*(unsigned __int8 *)(a1 + i + 1) + *(unsigned __int8 *)(a1 + i) != byte_140003000[i] 해당 식을 쉽게 작성해 보면a1[i+1..
문제이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요.문제 풀이해당 바이너리를 실행해 보겠습니다.올바른 값을 입력해야 Correct를 출력해 줍니다. IDA를 통해 소스코드를 보겠습니다. 1. 정적 분석Input을 출력하고 입력을 받고 sub_140001000를 호출하고 참이라면 Correct를 출력합니다.sub_140001000 함수를 분석해 보겠습니다.1을 반환하기 위해선 7번째에 if문의(i ^ (unsigned __int8)__ROL1__(*(_BYTE *)(a1 + i), i & 7)) != byte_140003000[i] 이 조건이 아니어..
문제Simple Flag Printer문제 풀이해당 문제는 4개의 바이너리가 제공됩니다.다른 바이너리 상관없이 flag-printer를 실행해 동작하는 걸 보니 이 바이너리를 분석하겠습니다. 1. 정적 분석main 함수를 디컴파일해 분석해 보겠습니다.1. while 루프를 진입한다.2. 두 번째 while 루프에서 입력을 받고 sub_1437()함수에 인수를 넣어 호출한 리턴값을 v3에 할당한다.3. v3가 2가 아니라면 while루프를 탈출한다.4. 3번 과정이 아니라면 sub_1749()함수를 호출한다.4. v3가 2를 초과한다면 Invalid Command!를 출력한다.5. v3이 1이라면 sub_1711(1)함수를 호출한다.6. v3이 1도 아니고 2도 아니라면 sub_1673()를 호출한다. v..
문제이 채팅봇은 여러분들이 좋아하는 과일을 알고 싶어 해요.과연 여러분들은 봇으로부터 플래그를 알아낼 수 있을까요?문제 풀이 1. 정적 분석해당 바이너리를 실행하면 반복하면서 어떤 과일을 제일 좋아하는지 물어봅니다.IDA를 통해 코드를 분석해 보겠습니다.아까 봤던 문자열을 참조하고 main을 따라가 보겠습니다.코드를 살펴보면 우리의 과일 입력값을 받고 do while 루프를 사용하여 반복하고 있습니다.코드를 마저 보면 while 루프를 탈출하기 위해선 v4 값이 31이 되어야 하고 플래그를 출력해 줍니다.이때 if문 내의 v4을 연산하는 코드들이 있습니다.각 과일의 if문마다 v4의 OR 연산을 수행하게 되면 v4가 31이 됩니다.그렇다면 각 과일을 알맞게 처음부터 끝까지 한 번씩 입력해 주면 되겠습니다..
문제본 문제에서는 chall 바이너리와 encrypted 파일이 제공됩니다.chall 바이너리는 플래그가 담긴 flag.png 파일을 정해진 방식으로 암호화하여 encrypted 파일로 저장합니다.flag.png 파일을 복구하여 플래그를 획득하세요.문제 풀이해당 문제의 바이너리는 chall, encrypted 2개가 제공됩니다.문제를 읽어보면 chall 바이너리가 flag.png 파일을 암호화하여 encrypted 파일로 저장한다고 되어있습니다.먼저 chall 바이너리를 실행해 보겠습니다.실행하면 fopen() error 문자열을 출력합니다.아마도 flag.png가 없어서 띄운 것 같습니다. IDA를 통해 chall 코드를 보겠습니다.해당 코드 동작은 다음과 같습니다.1. flag.png 파일을 바이너리..