Dreamhack 14

[dreamhack] ICM2022

문제를 다운 받으면 다음과 같이 두개의 파일이 있는데 이때 readme.txt 를 먼저 읽어줄게여 뭔가 변수값들을 주고 있는것 같으니 main.py 파일을 한번 살펴보겠습니다 import random from fractions import Fraction def enc(p, n, key1, key2): q = (Fraction(p, n+1)*key1**(n+1)) - (Fraction(p, n+1)*key2**(n+1)) print("[OK] plain is encrypted : ", q) return q def dec(q): # cencored def key_make(): n, key1, key2 = 0, 1, 0 while key2 < key1: n = random.randrange(1, 10) ke..

[dreamhack] set-int

드림핵 set-int 파일 분석 우선 파일을 다운 받아 보면 다음과 같은 c 코드가 들어있습니다 //Name: chall.c //Compile: gcc chall.c -o chall -no-pie -fno-stack-protector #include #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); } int main(int argc, char *argv[]){ uns..

WARGAME/misc 2023.09.29

[dreamhack] rev-basic-3

파일 실행 실행을 해봅쉬다 문자열을 찾으면 메인함수를 쉽게 찾을 수 있을 것 같습니다!! 그럼 정적분석을 먼저 해봅시다~ 정적분석 8행의 sub_140001000 함수가 문자열을 검증하는 함수인가 봅니다. 이 함수 이름을 "check_input" 이라고 바꾸겠습니다 check_input의 함수를 한번 살펴봅시다 반복문에서 i가 18(hex, dec=24)까지 증가하며 byte_140003000 배열의 각 값이 i ^ *(unsigned __int8 *)(a1 + i)) + 2 * i 의 계산 결과와 같아야지만 Correct를 출력하는 것 같습니다. (이때 a1은 우리가 입력한 문자열) 여기서 알아야 할 것은 저 중간의 XOR(^) 연산인데, XOR 연산의 가장 대표적인 특징이 다음과 같습니다. if A ..

WARGAME/reversing 2023.09.22

[dreamhack] patch

실행파일 실행 먼저 실행파일을 실행해보면 다음과 같은 화면이 뜹니다. 이때, 플래그 값이 어떤 줄들에 의해 지워진 걸로 보이네요!! 문제 설명에 나와있듯이 flag를 가리게 하는 어떤 루틴이 있는걸로 보입니다. 정적분석 IDA 로 한번 정적 분석을 해보겠습니다. 보면 WinMain 이라는 메인함수가 제일 먼저 호출되고 있습니다. 지금 실행시켜도 알겠지만 이 친구는 WinAPI 를 사용한 GUI 실행파일입니다. 따라서 이 점을 참고하고 디컴파일된 코드를 보겠습니다. 여기서 함수들을 분석을 할건데, 저는 WinAPI에 대해서 잘 모르기 때문에 마이크로소프트의 공식문서를 활용하여 분석을 해보도록 하겠습니다. 여기서 LoadStringW 이라는 함수에 대해서 자세히 알아보자면, 지정된 모듈과 연결된 실행 파일에..

WARGAME/reversing 2023.09.22

[dreamhack] rev-basic-1

분석 시작~! ida 로 정적분석 해봅시다 옹~ 얘도 chall0 처럼 비슷하네요 함수 이름 싹다 바꿔줍시다 그러면 중간에 있는 저 sub_140001000 함수가 굉장히 거슬리죠? 이 함수 코드를 함 봐봅시다 당황쓰... a1[] 이라는 리스트에 하나하나를 대입해서 아스키코드와 같은지 보고 있는 것 같다! 그럼 저 아스키 코드를 하나하나 변환해보면 답이 나오겠죠?? 꿀팁! IDA 에서 숫자를 문자로 (아스키코드) 바꾸고 싶다면 r 을 누르면 됩니다... 그럼 이렇게 바뀌어용~~~~ 이들을 다 조합해보면 답은? Compar3_the_ch4ract3r ^_^

WARGAME/reversing 2023.09.15

[dreamhack] rev-basic-0

분석을 해봅쉬다 먼저 실행을 해보면 다음과 같이 나온다 이때 아무거나 입력하면 당연히 실행이 종료되겠죠 IDA 로 정적분석을 해서 디컴파일을 해봅시다 여기서 sub_14001190 은 printf() 함수이고 sub_1400011F0 는 scanf() 함수로 보이네용 우리 가독성을 위해 각 함수명을 바꿔봅쉬다 이러면 조금 더 보기 편하죠 그럼 저 중간에 있는 sub_140001000 함수가 뭔지 알아야겟다! 당황쓰.. 바로 strcmp 함수였네요?! 저기서 Compar3_the_str1ng 이라는 문자열과 동일한 경우에만 1 을 리턴하고 있습니다 같지 않다면 0이 리턴되겠죠 그럼 메인 함수에서 같은 경우에는 Correct 가 나오고 안 같으면 Wrong 이 실행되고 종료되는 거겠네요... 그럼 정답은 ?..

WARGAME/reversing 2023.09.15

[dreamhack] 64se64

웹사이트로 들어가면 다음과 같이 뜹니다. 여기서 html 소스를 확인해보면 다음과 같이 숨겨진 항목을 볼 수 있습니다! (저는 파일 다운 안받고 그냥 크롬 f12 눌러서 봤습니다..) 일단 ==으로 끝났으니 value는 base64 인코딩 된 것 같죠?? 그럼 cyberchef를 이용해서 디코딩해주면 다음과 같이 나옵니다 그럼 얘를 파이썬 파일로 돌려줍니다! (저는 귀찮아서 온라인 파이썬 컴파일러로 돌려줬습니다) 이렇게 플래그가 바로 뜹니다! ㅎㅎ

WARGAME/misc 2023.06.29

[dreamhack] phpreg

저번주에 진행한 이캅스 ctf에서 웹 챌린저팀이 만든 문제 + 드림핵의 babylinux 짬뽕한 문제느낌!! 텍스트 대체 + 리눅스 명령어를 우회할 수 있는지 보는 문제였습니다. 우선 접속하면 나오는 웹페이지입니다. 함께 제공되는 index.php 파일을 살펴봅시다. PHPreg Step 1 Step 2 Step 1 : Open the door & Go to Step 2 !! 우선 크게 특별한건 없어 보이는데, 우선 nickname과 password를 입력하고 버튼을 누르면 post로 정보를 넘기고 있습니다. 여기서 step2.php를 보면, PHPreg Step 1 Step 2

WARGAME/web 2023.06.28

[dreamhack] [wargame.kr] strcmp

웹해킹을 재작년에 잠깐 공부하고 한동안 손 안대다가 그냥 레벨1이니깐 쉽게 풀리지 않을까? 해서 한번 풀어봤다 제목부터 strcmp의 취약점을 이용하여 플래그를 찾는것 같다. 우선 웹페이지를 한번 볼게용 password를 입력 받고 있네요 chk를 눌러서 올바른 password 인지를 확인하는 것 같습니다 이때 source에서 $password = sha1(md5(rand().rand().rand()).rand()); if (isset($_GET['view-source'])) { show_source(__FILE__); exit(); }else if(isset($_POST['password'])){ sleep(1); // do not brute force! if (strcmp($_POST['passwor..

WARGAME/web 2023.06.02