분류 전체보기(363)
-
rev-basic-4 풀이
sub_140001000() 함수의 return값에 따라서 Correct, Wrong가 결정되므로 함수 안에 들어있는 for문을 분석하겠습니다. 그리고 for문을 돌리는 횟수가 0x1C(10진수로 28)인데, byte_140003000에 들어있는 16진수가 기준인 듯합니다. if문에 들어있는 수식에 해당되지 않는다면 Correct가 나오게 됩니다. [if문에 들어있는 수식] (arr[i]4 이제 이 수식을 기반으로 C++ 코드를 짜 보겠습니다. 별다른 역연산은 필요하지 않을 듯합니다. #include #include using namespace std; unsigned char arr[28]={0x24,0x27,0x13,0xC6,0xC6,0x13,0x16,0xE6,0x47,0xF5,0x26,0x96,0x..
2021.10.29 -
rev-basic-3 풀이
sub_1400011B0(), sub_140001210() 함수들은 별로 중요하지 않은 함수이기 때문에 분석은 넘어가겠습니다. sub_140001000() 함수를 보면 for문을 24번 돌려서 xor 연산을 하고 있는 걸 알 수 있습니다. byte_140003000에 뭐가 있는지 확인해보겠습니다. 16진수들이 쭉 나열되어있습니다. 저 수들을 연산하는 것 같은데, sub_140001000() 함수의 return값이 1일 때 Correct가 되므로 if문에 나온 조건식을 역연산하여 코드를 짜고 돌리면 FLAG가 나올 것 같습니다. 코드는 C++로 작성해보겠습니다. #include #include using namespace std; char arr[24]={0x49,0x60,0x67,0x74,0x63,0x6..
2021.10.28 -
rev-basic-2 풀이
우선 IDA로 파일을 열어서 main() 함수에서 쓰이는 함수를 세 가지 가져왔습니다. main() 함수에서 if문을 보면 sub_140001000()의 반환 값에 따라서 correct인지 wrong인지 판별이 됩니다. 그러므로 sub_140001000() 함수를 분석해보겠습니다. for문을 돌리면서 aC의 인덱스와 비교를 합니다. aC가 문자열인지 배열인지는 모르겠지만, 우선 구성을 알기 위해 aC 함수를 보도록 하겠습니다. 문자들이 쭉 나열되어있는 걸 볼 수 있습니다. 여기에 나오는 문자들을 하나씩 이어 붙여보면 FLAG가 나올 것 같습니다. (FLAG 획득 완료?) 간단한 문제였습니다. 목표는 rev-basic 시리즈 올솔!
2021.10.28 -
[pwnable.kr] syscall 풀이
// adding a new system call : sys_upper #include #include #include #include #include #include #include #include #define SYS_CALL_TABLE0x8000e348// manually configure this address!! #define NR_SYS_UNUSED223 //Pointers to re-mapped writable pages unsigned int** sct; asmlinkage long sys_upper(char *in, char* out){ int len = strlen(in); int i; for(i=0; i=0x61 && in[i]
2021.10.16 -
[BOJ 1287] 할 수 있다
https://www.acmicpc.net/problem/1287 1287번: 할 수 있다 곱하기가 연산자 우선순위가 빠르므로 5+(1+2)*3 = 5+3*3 = 5+9 = 14가 된다. 연산자의 우선순위는 다음과 같다. (), */, +- 여기서 *와 /가 연산자 우선순위가 같고, +와 -가 연산자 우선순위가 같다. ()가 www.acmicpc.net - 문제 요약 식이 문자열 형식으로 주어지면 그 식을 계산하여 결괏값을 10진수 형식으로 출력하시오. 단, 식을 구성하는 문자는 0~9까지의 숫자, +, -, /, *, (, )이고 +, -, /, *는 이항 연산자이다. 식이 올바르지 않아 계산 할 수 없다면 "ROCK"를 출력한다. - 알고리즘 정리 이 문제는 무조건 파이썬으로 푸는 게 편할 것 같아서..
2021.10.11 -
[CTF-D] 계속 주시해라! 풀이
키 포맷이 텍스트라고 하니, 문자열 검색을 해도 답이 나올 것 같지는 않습니다. 가장 먼저 보이는 16진수 값이 FF D8 (jpg 헤더 시그니처)이므로, jpg의 헤더와 푸터 시그니처를 검색해보겠습니다. jpg 파일들이 숨어있을 줄 알았는데, 의외네요. Decoded Text 부분을 보면 푸터 시그니처 뒤에 키 값으로 추정되는 문자열이 보입니다. 이 문자열을 제출해보겠습니다. 문제 제목 그대로 Decoded Text 부분을 계속 주시하면 풀리는 문제였습니다.
2021.09.20