Wargame/HackCTF30 Random Key 1. Mitigation 메모리 보호기법은 GOT Overwrite가 가능하고 실행 권한이 없다. 2. 문제 확인 프로그램을 실행시키면 key를 입력하라고 나오며 입력을하면 Nah...라고 출력한다. 3. 풀이 IDA를 통해 분석을 해보면 time(0), srand(), rand() 함수가 있고 키를 입력 받는다. v5와 v4가 같아야만 플래그 값을 출력 해준다. srand 는 rand의 seed값을 지정해주고 rand함수는 srand가 지정해준 seed값을 바탕으러 난수를 생성한다. time 함수를 NULL로 받으면 1970년 1월 1일 00시 기준으로 현재까지 흐른 시간의 초를 나타내준다. 초는 멈추지 않고 계속 흐르니깐 srand(time(NULL))을 설정하면 난수는 실시간으로 변경된다. 그러면 .. 2021. 3. 21. Strncmp 1. 풀이 프로그램을 실행시켜 보면 input을 요구하고 입력을 하니까 Always dig deeper를 출력해주고 종료한다. 프로그램을 IDA로 main함수 영역을 살펴보면 입력을 받는 부분이 있고 Good game과 Always dig deeper 문자열이 보인다. 입력을 받고 입력을 받은 v4와 위의 숫자들 즉 v5값을 사용자 정의 함수인 strcmp_ 함수의 인자로 넘겨준다. strcmp_를 살펴보자 strcmp_ 함수를 살펴보면 첫 번째 for문 부분은 왜 돌리는지 아직도 잘 모르겠다. 두 번째 for문 부분에서 입력 값과 key 값을 xor연산을 하여 그 값이 a2 값과 일치하면 Good game을 출력한다. key는 check 함수가 있는데 그 쪽 부분에서 한번 살펴 보자. v3에 a2를 넣.. 2021. 3. 19. Poet 1. Mitigation Partial RELRO와 NX enabled인거 말고는 특별한 것은 없다. 2. 문제 확인 프로그램을 실행시키면 한 줄의 시를 쓰라고 입력을 받고 저자를 묻는다. 입력하고 난 후 시의 내용과 점수를 출력하고 1000000점을 획득하라고 한다. IDA로 분석 해보자. main 함수 영역을 보면 get_poem, get_author, rate_poem 그리고 puts와 reward 함수가 있다. get_poem 함수부터 차례로 하나씩 보자. 먼저 get_poem 함수는 시의 내용을 입력받는 부분이다. 내용을 입력바고 dword_6024E0 부분을 0으로 초기화 시키고 입력 값을 리턴한다. get_author 함수는 저자를 입력을 받고 리턴한다. rate_poem 영역은 get_po.. 2021. 3. 19. RTL_Core 1. Mitigation 보호기법은 GOT Overwrite가 가능하고 실행 권한이 없다. 2. 문제 확인 프로그램을 실행시켜보면 Passcode를 입력하라고 나오며 패스코드를 입력하니 실패! 를 출력해준다... 3. 풀이 main 함수를 살펴보면 Passcocde를 입력하는 부분과 check_passcode 함수와 hashcode가 보인다. check_passcode와 hashcode 영역을 살펴보자. 해쉬 코드 부분을 보면 0C0D9B0A7 값이 들어가있다. check_passcode 함수는 입력받을 값을 5번에 걸쳐서 더한 값을 리턴해준다 그렇다면 5번의 걸쳐 더한 값이 hashcode와 같으면 core 함수를 불러올 수 있다. 그렇다면 해쉬 값을 5번 나눠주면 된다. 0xC0D9B0A7 값을 5로.. 2021. 3. 19. 이전 1 2 3 4 5 6 7 8 다음