본문 바로가기

드림핵 워게임

(24)
[드림핵/워게임] rev-basic-4 https://dreamhack.io/wargame/challenges/18/ 앞선 문제들과 동일한 부분에 대한 설명은 생략하겠다. 빠르게 sub_140001000 함수를 살펴 보겠다. (16 * str[i]) || (str[i] >> 4) 의 결과가 byte_140003000[i]의 값과 대응되어야 한다. 16진수에 16을 곱하는 것은 4) == byte_140003000[i]와 같다. 입력이 0xA로 들어왔다고 가정해 보자. 0xA를 2진수로 표현하면 0000 1010이다. 0xA > 4 = 0000 0000 1010 0000 || 0000 0000 = 1010 0000 즉, 이 식은 처음 입력했던 문자열에 2진수에서 4비트끼리 앞뒤로 뒤집은 것이다! 따라서 이를 반대로 적용해서 풀어 주면 된다. b..
[드림핵/워게임] rev-basic-3 https://dreamhack.io/wargame/challenges/17/ 이전 문제들과 동일하게 문자열을 입력하고 조건에 맞으면 Correct, 틀리면 Wrong을 출력하는 프로그램이다. 전체적인 코드는 이전의 문제들과 같다. sub_140001000 함수에 들어가 보자 0x18번 반복문을 돌며 byte_140003000[i]에 저장되어 있는 값과 (i xor (입력값+i) + 2 * i) 를 비교하는 프로그램이다. byte_140003000에 저장된 값은 다음과 같다. byte_140003000에 저장되어 있는 값과 주어진 수식을 통해 입력값을 구할 수 있을 것 같다. 주어진 수식을 역으로 계산해 보면 I_am_X0_xo_Xor_eXcit1ng이 나오고 이것을 입력으로 넣어 주면 Correct 가..
[드림핵/워게임] rev-basic-2 https://dreamhack.io/wargame/challenges/16/ 문제는 앞선 문제들과 똑같으니 IDA 코드를 살펴 보자 다른 코드들은 모두 똑같으니 빠르게 sub_140001000 함수부터 보겠다. 0x12번 반복하므로 입력 문자열의 길이는 18이라는 것을 추측할 수 있다. aC에서 4바이트씩 증가하며 입력 문자열과 비교한다. → aC에 무엇이 저장되어 있는지 살펴 보면 된다. 배열의 형태로 문자들이 저장되어 있는 것을 볼 수 있다. 이를 다 이어 붙이면 Comp4re_the_arr4y가 나온다. 입력으로 넣어 주니 Correct가 잘 뜨는 모습이다.
[드림핵/워게임] rev-basic-1 https://dreamhack.io/wargame/challenges/15/ 문제 파일을 받으면 이렇게 실행 파일이 존재한다. 터미널에서 실행해 보면 rev-basic-0과 똑같이 입력, 출력이 이루어진다. IDA로 열어 보자!! 전체적인 코드는 똑같으므로 설명을 생략하겠다 sub_140001000 를 보면 1바이트 단위로 값을 비교하는 것을 볼 수 있다. 각 인덱스 값이 모두 같으면 Correct를 출력한다. 숫자를 문자로 변환하는 단축키 R을 이용해 모두 변환해 보겠다. 결론적으로 입력되어야 하는 문자열은 Compar3_the_ch4ract3r이다 성공적으로 Correct가 뜬 걸 볼 수 있다.
[드림핵/워게임] rev-basic-0 https://dreamhack.io/wargame/challenges/14/ 문제 파일을 받으면 이렇게 실행 파일이 존재한다. 터미널에서 실행해 보면 사용자의 입력을 받고 Wrong을 출력하는 걸 볼 수 있다. IDA로 열어 보자!! 강의를 보긴 했지만 처음 해 보는 거라 막막하기만 하다… 우선 사용자의 입력으로 인해 correct, wrong 이 결정되고 출력되므로 단축키 Shift + F12를 사용해 correct 문자열을 찾아 보자!! Ctrl+F를 통해 correct를 찾아 주고 더블 클릭해 주면 아래와 같은 화면이 뜬다. View → Open Subviews → Cross References 를 누르면 이 문자열이 참조되는 함수를 볼 수 있다. 사실상 위의 사진에서도 correct는 main+..
[드림핵/워게임] basic_exploitation_002 basic_exploitation_002 https://dreamhack.io/wargame/challenges/4 문제 파일을 다운 받으면 basic_exploitation_002.c와 실행 파일이 있다. #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } int main(int argc, ch..
[드림핵/워게임] out_of_bound_000 https://dreamhack.io/wargame/challenges/9
[드림핵/워게임] off_by_one_001 https://dreamhack.io/wargame/challenges/10