반응형

리버싱 62

[Tenable CTF] The only tool you'll ever need - 리버싱 / Strings

아주아주 쉬운 리버싱 문제 사실 너무 쉬워서 리버싱이라 부르기도 좀 그렇다. 문제 풀이수가 얼마나 쉬웠는지 증명해주고 있다. 문제에서 주어지는 것은 a.out 파일이다. 문제 설명을 보면 리버싱 문제를 풀기위한 가장 파워풀한 도구가 뭔지 아냐고 물어보는데 여러 후보들이 있지만 이 문제의 경우 메모장도 그중 하나일것 같다. 메모장으로 a.out 파일을 열어서 스크롤을 조금만 내려보면 플래그가 보인다.. 플래그의 내용에 strings 가 있는걸로 보아 문제 출제자의 의도는 strings 도구를 사용하라는 것인듯 하다. 리눅스 환경에서 strings 명령어를 이용해 a.out 파일을 확인해보면 똑같이 플래그를 찾을 수 있다.

CTF/리버싱 2023.03.22

[DiceCTF] babymix - 리버싱 / IDA / Python

쉬운것 같으면서도 쉽지 않은 리버싱 문제 python z3 를 알고있다면 금방 풀수있다. babymix 라는 이름의 바이너리 파일이 하나 주어진다. 한번 실행시켜봤다. admin 비밀번호를 입력하라고 요구하고, 비밀번호가 틀리면 Incorrect 메세지가 출력되면서 종료된다. 바로 IDA 를 이용해 디컴파일 해보았다. main 함수를 보면 사용자의 입력값을 s에 담아 check815546 함수로 집어넣는다. 그 검증결과가 참일경우 Correct 라는 메세지가 출력된다. check815546 함수를 살펴봤다. 사용자가 입력한 값의 각 자리를 계산해서 특정한 조건을 만족시키는지 검증한다. 그런데 한번 검증하고 끝나는게 아니라 여기서 또 check921708 함수를 호출한다. check921708 함수도 마찬..

CTF/리버싱 2023.03.05

[CTFlearn] RE_verseDIS - 리버싱 / IDA / Python

CTFlearn 의 일흔 여섯번째 문제 이번엔 Medium 난이도의 리버싱 문제이다. 숨겨진 비밀번호를 찾으라고 한다. 문제에서 주어지는 것은 problem 파일이다. 리눅스 환경에서 시험삼아 실행시켜 보았다. 비밀번호를 입력받는데 test 라고 입력했더니 틀린 비밀번호라는 문구가 출력된다. 바로 IDA 라는 디스어셈블러를 이용해 problem 파일을 열고, F5를 눌러 main 함수의 수도코드를 살펴보았다. key 배열에 들어있는 값을 key2 배열로 옮겨서 집어넣고, msg 배열에 str[4 * 1] ^ LOBYTE(key2[i]) 의 결과값을 집어넣는다. 그리고 사용자의 입력값이 msg 배열과 같은지 검증하고 있다. key 배열에는 IdontKnowWhatsGoingOn 라는 값이 들어있고, str..

워게임/CTFlearn 2023.03.03

[LACTF] caterpillar - 리버싱 / 자바스크립트

자바스크립트 난독화와 관련된 리버싱 문제 복잡해 보이지만 어렵지 않게 풀 수 있다. const flag = "lactf{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}"; if (flag.charCodeAt(-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~[]) == -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~[]..

CTF/리버싱 2023.02.23

[justCTF] That's not crypto - 리버싱 / uncomplye6

어렵지 않은 리버싱 문제 crypto 문제가 아니라고 문제 제목에서부터 강력하게 어필하고 있다. 문제에서 주어지는 것은 checker.pyc 파일이다. .pyc 파일을 파이썬 코드로 복구하는데는 uncompyle6 라는 도구를 사용한다. pip install uncompyle6 라고 입력하면 다운로드 받을 수 있다. uncompyle6 이라고 입력하면 아래쪽에 디컴파일된 결과가 출력된다. from random import randint def make_correct_array(s): from itertools import accumulate s = map(ord, s) s = accumulate(s) return [x * 69684751861829721459380039 for x in s] def val..

CTF/리버싱 2023.02.15

[CTFlearn] Reykjavik - 리버싱 / IDA

CTFlearn 의 예순 여섯번째 문제 이번엔 쉬운 난이도의 리버싱 문제이다. 문제 설명을 보면 gdb 를 이용해보라고 하는데 더 쉬운 IDA 를 이용해 풀것이다. 문제 제목인 Reykjavik 는 아이슬란드의 수도라고 한다. 문제 출제자가 아이슬란드 사람인가 보다. 문제에서 주어지는 것은 Reykjavik 바이너리 파일이다. 한번 실행시켜 봤는데 인자로 플래그를 입력받는듯 했다. 바로 IDA 라는 디스어셈블러를 이용해 바이너리를 열어보았다. main 함수의 수도 코드를 살펴보니 v3 변수에 사용자가 입력한 인수를 저장하고 아래쪽에 strcmp 함수로 v3 와 CTFlearn{Is_This_A_False_Flag?} 가 같은지 비교하고 있다. 같으면 아래쪽 printf 가 실행되는데 이건 가짜 플래그라고..

워게임/CTFlearn 2023.02.09

[JISCTF] REV102 - 리버싱 / Uncompyle6

푸는데 머리조금 아팠던 리버싱 문제이다. 역시나 수학은 어려운것 같다.. 문제에서 주어지는 것은 be_true 라는 바이너리 파일이다. 무슨 파일인지 보려고 HxD로 열어봤는데 중간중가네 pys, pyt 이런 단어들이 보여서 파이썬으로 만들어진 것이라고 추측했다. 확실하게 파이썬이라고 생각한건 을 구글에 검색한 결과 파이썬 제너레이터라는 검색결과가 나왔기 때문이다. 그래서 해당 파일의 확장자를 .pyc 로 바꾸고 분석을 시작했다. .pyc 파일을 파이썬 코드로 복구하는데는 uncompyle6 라는 도구를 사용한다. pip install uncompyle6 라고 입력하면 다운로드 받을 수 있다. python3 uncompyle6 이라고 입력하면 이렇게 파이썬 코드를 복구할 수 있다. import opera..

CTF/리버싱 2023.01.22

[JISCTF] Baby Reverse - 리버싱 / IDA

제목처럼 간단한 리버싱 문제 아무런 설명없이 파일만 덩그러니 주어진다. Easy.zip 파일 압축을 풀어보면 Easy 라는 이름의 파일이 들어있다. 리눅스 환경에서 file 명령어를 통해 어떤 파일인지 확인할 수 있다. ELF 파일이라고 나오는데 ELF는 리눅스에서 실행가능한 실행파일이다. 한번 실행시켜 봤더니 실행하자마자 Try harder!! 라는 문구가 나오면서 프로그램이 종료된다. IDA라는 디스어셈블러를 이용해 Easy 파일을 열어 main 함수의 수도코드를 살펴보았다. 가장 먼저 보이는 조건문에서 argc가 1인지 확인을 한다. 여기있는 argc는 argument의 갯수를 의미한다. 아까처럼 ./Easy 라고만 실행하면 argc 는 1이 되어서 Try harder!! 가 출력되고 끝나는 것이다..

CTF/리버싱 2023.01.17

[CTFlearn] PIN - 리버싱 / IDA

CTFlearn의 쉰 여섯번째 문제 이번엔 처음으로 나온 리버싱 문제이다. 문제 난이도가 Medium으로 분류되어 있는데 풀어보면 Easy 수준으로 느껴질만큼 쉽다. 문제에서 주어지는것은 rev1 파일이다. 리눅스 환경에서 file 명령어를 통해 어떤 파일인지 확인할 수 있다. ELF 파일이라고 나오는데 ELF는 리눅스에서 실행가능한 실행파일이다. 한번 실행시켜 봤더니 실행하자마자 Masukan PIN = 이라는 문구가 나오며 사용자 입력을 받는데 123 이라고 입력해봤더니 PIN salah! 라는 문구가 출력되었다. 검색해보니 salah 는 잘못되었다는 뜻이라고 한다. IDA 라는 디스어셈블러를 이용해 rev1 파일을 열어보았다. main 함수의 수도코드를 가장 먼저 살펴보니 scanf 로 사용자의 입..

워게임/CTFlearn 2023.01.13

[PoseidonCTF] The Large Cherries - 리버싱 / IDA / Pwntool

쉬운 난이도의 리버싱 문제 원격으로 접속할 수 있는 주소와 Lao-Tzu 라는 이름의 바이너리 파일이 제공된다. 참고로 Lao-Tzu 는 춘추시대 철학자인 노자를 말한다. Lao-Tzu 파일을 리눅스 환경에서 실행시켜 보았다. Enter the secret for the magic word : 라면서 사용자의 입력을 기다린다. 123 이라고 입력해봤는데 magic word 가 아닌지 바로 프로그램이 종료되었다. 바로 IDA를 이용해 바이너리를 열어서 main 함수를 살펴보았다. Enter the secret for the magic word : 라는 문구가 출력된 후에, scanf 로 사용자 입력을 받아 v9 변수에 저장한다. 그다음 magic_word 함수에 v9를 인수로 집어넣고, 그 결과를 v4에 ..

CTF/리버싱 2022.11.12
반응형