반응형

reversing 57

[HouseplantCTF] LEMON - 리버싱 / Python

계속해서 이어지는 쉬운 파이썬 리버싱 문제 똑같은 패턴이다. 조금 더 secure한걸 만들었다고 한다. 하지만 역시나 아주 쉽게 플래그를 얻을 수 있다. 주어지는 문제파일은 pass2.py 파일이다. 먼저 IDLE을 이용해 py파일을 한번 실행시켜 봤다. Enter the password: 라는 문구가 나오고, 123을 입력해봤더니 Incorrect password! 라는 문구가 나온다. 그리고 나서 저번처럼 약올리는듯한 멘트를 출력한다. def checkpass(): userinput = input("Enter the password: ") if userinput[0:4] == "rtcp": if userinput[10:13] == "tHi": if userinput[22:25] == "cuR": if..

CTF/리버싱 2022.06.14

[HouseplantCTF] PZ - 리버싱 / Python

어려운 Java 리버싱 문제를 풀고 난 후 다시 머리를 식혀주는 쉬운 문제 문제 제목부터 PZ (EZ-PZ) 이다. (EZ : https://hackingstudypad.tistory.com/167) 문제 설명을 읽어보면 EZ 문제보다 조금 더 잘 만든거 같다고 아마 플래그를 얻지 못할것이라고 한다. 하지만 아주 쉽게 얻을 수 있다. EZ문제도 그렇고 이 문제도 그렇고 리버싱 이라기보다 그냥 틀린그림찾기 정도가 아닐까 싶다. 이번에도 역시 pass1.py 파일이 주어진다. IDLE을 이용해 py파일을 실행시켜 보았다. Enter the password: 라는 문구가 나오고, 123을 입력해봤더니 Incorrect password! 라는 문구가 나온다. 그다음 뭔가 은근 기분나쁜 느낌의 노래같은걸 출력한다..

CTF/리버싱 2022.06.12

[HouseplantCTF] Bendy - 리버싱 / Java

Java 리버싱 최종단계 문제 확실히 이전 두 문제(Fragile, Breakable) 보다 더 어렵다. 막 기술적으로 어렵다기보다 계산을 복잡하게 해서 머리가 아파진다. Fragile : https://hackingstudypad.tistory.com/163 Breakable : https://hackingstudypad.tistory.com/164 이번에도 역시 java 파일이 주어진다. import java.util.*; public class bendy { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print("Enter flag: "); String userInput = ..

CTF/리버싱 2022.06.11

[HouseplantCTF] EZ - 리버싱 / Python / 주석

본격적으로 어려운 Java 리버싱 문제를 풀기 전 조금 머리를 식히는 느낌으로 나온 귀여운 문제이다. 사실 이 문제는 리버싱이라고 부르기도 좀 그렇다; 문제 설명을 읽어보면 password system을 만들어서 flag를 획득하지 못할 것이라고 한다. 문제 파일로 주어진건 pass0.py 파일이다. 시험삼아 윈도우 cmd창에서 해당 파일을 먼저 실행시켜 봤다. 그랬더니 무슨 사람 모양으로 특수문자들이 출력되는데, 맨 위쪽에 보면 플래그 같은것도 같이 출력되어 있다. rtcp{tH1s_i5_4_d3c0Y_fL4g_s0_DoNt_sUbm1T_1t!} 라고 적혀있는데 이걸 읽기 쉽게 다시 쓰자면 This is a decoy flag so Don't submit it! 이라고 적혀있는것이다. 한마디로 함정이다..

CTF/리버싱 2022.06.10

[HouseplantCTF] Breakable - 리버싱 / Java

두번째 리버싱 문제 어제 포스팅한 Fragile 문제보다 조금 더 어렵게 진화한 문제이다. Fragile : https://hackingstudypad.tistory.com/163 이번에도 역시 java 파일이 주어진다. import java.util.*; public class breakable { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print("Enter flag: "); String userInput = scanner.next(); String input = userInput.substring("rtcp{".length(),userInput.length()-1); if..

CTF/리버싱 2022.06.07

[HouseplantCTF] Fragile - 리버싱 / Java

이번 대회의 리버싱 문제 중 가장 쉬웠던 문제이다. 처음엔 뭐 이렇게 쉽나 생각했는데 약간 함정이었던게 이 문제를 베이스로 해서 뒤로 갈 수록 더욱더 괴상한 문제들이 나왔었다. 철저한 빌드업이었던것.. 문제파일로는 fragile.java 파일이 주어진다. import java.util.*; public class fragile { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print("Enter flag: "); String userInput = scanner.next(); String input = userInput.substring("rtcp{".length(),userInpu..

CTF/리버싱 2022.06.06

[UMDCTF] Twilight Zone - 리버싱 / dnSpy

리버싱 문제 생각보다 어려워서 시간을 많이 투자했다. 문제파일로 TwilightZone.exe 파일이 주어진다. 주어진 exe파일을 실행시키면 이렇게 느끼한 아저씨 사진과 함께 비밀번호를 입력하는 창이 뜬다. 비밀번호칸에 hello 라고 시험삼아 입력해봤는데 당연히 틀린 비밀번호기 때문에 Not happening! 이라는 알람창이 뜬다. exe 파일이니 평소에 하던대로 디스어셈블러인 IDA 프로그램으로 열어보았다. 그런데 평소와 다른 인터페이스가 나왔다. .NET으로 개발하면 이런식으로 나온다고 한다. Mystery라는 함수가 있어서 내용을 살펴보는데 뭔가 암호화시켜서 저장하고 있는듯 보였다. 아무래도 비밀번호를 내부에 암호화해서 저장하고 있는듯 하다. IDA로 이리저리 보다 너무 가독성이 떨어져서 어떻..

CTF/리버싱 2022.05.11

[UMDCTF] Santa Mysterious Box - 리버싱 / IDA

이 문제를 2년전에 풀어보고 이번에 포스팅 하면서 다시 풀어봤는데 예전과 달리 넘 쉽게 풀려서 어이가 없었다. 예전에 풀때는 ltrace를 이용해서 노가다해서 풀었는데 다시보니 사실 그럴 필요가 없는 문제였다. 문제 설명을 읽어보면 산타할아버지가 박스를 주는데 비밀번호를 맞춰야 사탕을 주고, 나머지 사람들은 석탄을 준다고 한다... 문제 파일로 SantaBox라는 이름의 바이너리 파일이 주어진다. 칼리 리눅스에서 file 명령어를 통해 해당 바이너리의 정보를 확인해보면 ELF 파일임을 알 수 있다. ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다. 시험삼아 바이너리 파일을 실행시켜 본다. 실행시키면 저렇게 Enter code here: 라고 뜨면서 입력을 받는데 giveme 라고..

CTF/리버싱 2022.05.03

[UMDCTF] Easy Money - 리버싱 / Strings

제목처럼 쉬운 리버싱 문제 money 라는 이름의 바이너리 파일이 주어진다. 칼리 리눅스에서 file 명령어를 통해 해당 바이너리의 정보를 확인해보면 ELF 파일임을 알 수 있다. ELF 파일은 리눅스에서 실행 가능한 EXE 파일같은거라고 생각하면 된다. 프로그램은 아주 간단하다. 내 이름을 물어보고 입력을 받는다. hello 라고 입력해봤더니 Hello hello 라고 내가 입력한 값을 그대로 에코 해준 뒤 프로그램이 종료된다. 프로그램을 조금 더 자세히 보기위해 strings 명령어를 사용해봤다. strings 명령어를 사용하면 바이너리에서 문자열을 찾아서 출력해준다. 중간에 보니 아까는 보지 못했던 문장들과 밑에 뭔가 인코딩된 값이 길게 쓰여있는걸 확인할 수 있었다. 조금 내리다가 Hello fri..

CTF/리버싱 2022.05.02

[DCTF] Seek - 리버싱 / C / fseek

C언어 리버싱 문제이다. 문제 파일로 seek.c 과 flag.txt 파일 두개가 주어진다. flag.txt 파일을 메모장으로 열어보면 아무것도 써있지 않다. 파일이 잘못됐나 싶어서 다시한번 봤더니 크기도 0바이트인게 진짜 아무것도 안써있는게 맞았다. 다음으로 seek.c 파일을 열어보았다. 열어보면 752줄로 파일이 꽤 길다. 내용을 살펴보면 flag.txt 파일을 읽어서 fp 변수에 우선 저장한다. 그다음부터 약 700줄 가량은 fseek 라는 함수가 실행되고 있다. fseek 함수를 찾아봤더니 파일의 읽기/쓰기 위치 변경함수라고 한다. int fseek(FILE *stream, long offset, int origin) 이게 기본 문법이다. 매개 변수를 세개를 받는데 첫번째는 파일을 지정해주고(F..

CTF/리버싱 2022.04.19
반응형