0x02 Reverse Engineer/0x03. Etc(70)
-
Rootme ch25 C++ Basic
c++ 관련 문제를 며칠전에 풀고 rootme에서 c++문제를 풀어보기로 하였다. 시간 소요 : 15분(브레이크포인트를 검증하기 위해 걸지 않고 하니 시간이 오래 걸렸다. 대회에서는 이렇게 하지 않아야 겠다.) 루틴이 비교적 쉬운 문제였다고 본다. 전체적인 흐름은 다음과 같다.1. 매개변수 argc!=2이면 프로그램이 종료된다.2. 입력된 매개변수 argv[1]이 있으면 정상적인 흐름을 진행할 수 있다. 3. 입력된 매개변수와 상관없이 string객체에 생성된 문자열의 길이를 체크한다.4. 문자열은 힙에 할당된다. 메인함수부분이다.argc!=2가 아니면 실패 관련 구문으로 분기하게 된다. 실패 구문 매개변수가 2개 들어갔을 경우 allocator와 string클래스가 눈에 보인다. string으로 무엇인..
2018.05.03 -
Simple Crack Me Writeup
출처 : http://www.rohitab.com/discuss/topic/39048-serial-crackme/ 주제 : c++ 분석 공부 목적 워게임 기반 : Dev C++ v5.0 - v5.5 / MINGW32 / GNU C v4.x 바이너리를 열면, UserName과 Serial을 입력할 수 있다. 소스코드를 보자. 메인함수이다.메인함수에서 봐야 하는 부분은 start이다. 문자열을 string 클래스에 넣어둔다. Username과 Serial을 std::cin을 이용하여 입력한 후 serialfunc에 접근한다. 결과문 출력 또한 string 클래스를 이용함을 볼 수 있었다. 대부분의 crackMe를 풀 때는 참,거짓에 의해 출력문이 나왔는데 c++에서는 이렇게도 적용할 수 있는 것을 알게 되었..
2018.04.28 -
BruteForce is Wonderful!
예전에 멘토형(yyt3000)이 해당 문제를 주었을 땐 노가다로 풀었었는데 댕이댕이님의 블로그에서 이 문제를 또 발견 하여 이번엔 코드로 작성해서 풀어보았다. [바이너리] : 조건은 다음과 같다. #include #include #include // condition// arr[0] & 0xAD == 0 // arr_index0// arr[1] & 0x9A == 0 // arr_index1// arr[2] & 0x97 == 0 // arr_index2// arr[3] & 0xbf == 0 // arr_index3// arr[4] & 0x5FC5 == 0 // arr_index4// arr[5] & 0xD6 == 0 // arr_index5 char arr[] = "";static int arr_index..
2018.04.02 -
XOR IT'S FUN
출처 : https://stop2y.blog.me/ 이 분의 블로그를 구경하다가 리버싱 문제를 하나 보게 되어 풀어보았다. 알고리즘은 다음과 같다. 코드는 다음과 같다.#include #include int main(){char arr[] = "\x42\x69\x74\x78\x2c\x5c\x6D\x7f\x7f\x7b\x63\x7e\x68\x2c\x36\x2c\x5f\x6f\x6d\x61\x7c\x69\x7e";char result[24] = { 0 };int xor_num = 0; while (xor_num < 255){printf("%d번째 : ", xor_num); for (int i = 0; i < sizeof(arr) / sizeof(arr[0])-1; i++){result[i] = arr[i] ..
2018.04.02 -
예전에 풀었던 Abex을 키젠 으로 다시 풀기
#include #include #include int main(){int t = 0x64;unsigned char name[100] = "\x0";printf("name 입력 >> ");scanf("%s", name);int n = strlen((const char*)name); if (n < 4)return -1; for (int i = 0; i < n; i++){name[i] += t;}for (int i = 0; i < n; i++){name[i] = name[i] & 0xffffffff;printf("%x", (int)name[i]);}return 0; 4글자만 된다. }
2018.03.15 -
2018 해킹캠프문제 2
보호되어 있는 글입니다.
2018.01.13