반응형

학회_공부해요/워게임 53

[Dreamhack] Write up - Type c-j

https://dreamhack.io/wargame/challenges/960 Type c-j Description php로 작성된 페이지입니다. 알맞은 Id과 Password를 입력하여 플래그를 획득하세요. 플래그의 형식은 DH{...} 입니다. dreamhack.io 문제 접속하면 아래처럼 뜬다 id랑 password입력하면 되는 구조.. 문제파일도 다운 받아봄 check.php 에 이쪽이 flag관련인거같음 입력한 값이 &id랑 &pw랑 일치해야되는 것 같다. 위에 코드랑 살펴서 &id먼저 확인해보기로함. id는 10자리이고 위에 함수를 통해서 랜덤으로 생성되는 것 같다. 랜덤인데 어케하냐 싶었는데 아래 코드랑 비교해보니까 위에 처음 랜덤생성 때는 분명 문자열 선언이었는데 아래에서는 int 정수형으..

[Dreamhack] Write up - simple-operation

https://dreamhack.io/wargame/challenges/836 simple-operation Description 우리의 친구 아모가 미션을 주었습니다. "내가 원하는 결과가 나오도록 값을 입력해 줘!" 주어진 바이너리를 분석하고 알맞은 값을 입력하면 플래그가 출력됩니다. 플래그는 flag 파일에 dreamhack.io 문제에서 주어진 파일을 IDA로 열어보았다. 보다보니까 처음 나온 랜덤 숫자랑 내가 입력한 값을 연산해서 a0b4c1d7 이 나오면 되는 것 같음 랜덤으로 나오는 숫자를 입력값이 랑 맞춰야되는 거같아서 코드를 nc랑 연결시키고 해야될 것 같다.. pwntool 사용해서 파이썬으로 코드를 작성했다. 역연산 코드 작성해서 돌렸는데 계속 실패해서 찾아보니까 연산한 값이 a0b4..

[Dreamhack] Write up - set-int

https://dreamhack.io/wargame/challenges/958 set-int Description 주어진 바이너리와 소스 코드를 분석하고 알맞은 입력값을 찾아 쉘을 획득하세요! 플래그는 flag 파일에 있습니다. 플래그의 형식은 DH{...} 입니다. dreamhack.io 문제 파일 열어보니까 .c파일이랑 들어있기래 열어서 솔루션 빌드 먼저 하려고했더니.. 헤더파일이 없단다.. 검색해봤는데 리눅스에서 쓰는 것 같다. 그래서 리눅스에서 nc로 열었더니 이렇게 input할 수 있게 된다. 일단 코드 분석을 해서 input에 맞는 값을 먼저 찾아야될거같다. a 값은 (int)a + 1했을 때 0이 되는 값이니까 -1로 해봤는데 맞았다. 두번째 입력값인 b를 찾아야 되는데 코드 보니까 b가 1..

[Dreamhack] Write up - amocafe

https://dreamhack.io/wargame/challenges/899 amocafe Description 아모카페에 오신 것을 환영합니다! 메뉴 번호를 입력하여 주문할 수 있는 웹 서비스가 작동하고 있습니다. 아모의 최애 메뉴를 대신 주문해 주면 아모가 플래그를 준다고 합니다. 첨부 dreamhack.io 주어진 링크로 들어가면 이렇게 뜬다.. 1_c_3_c_0__ff_3e 메뉴를 가장 좋아한다길래 그냥 넣어봤는데 당연히 틀림.. 문제에서 제공하는 파일을 열어보기로 했다. 이 부분이 플래그를 구하는 부분인거 같음. org값을 알아내면 될거같은데 연산이 이해가 안돼서 chatgpt를 함 써봤다. 대충 보니까 주어진 문자열을 2진수로 바꾼다음에 int로 변경해야 되는 것 같다. 챗지피티 여러번 사용..

[Dreamhack] Write up - Carve Party

https://dreamhack.io/wargame/challenges/96 Carve Party Description 할로윈 파티를 기념하기 위해 호박을 준비했습니다! 호박을 10000번 클릭하고 플래그를 획득하세요! dreamhack.io 문제파일을 받아서 html 실행시키니까 호박이 나온다. 몇번 찔러봄 천번이면 찔러볼만하겠는데 만번을 수동으로 찌르기는 너무 많다,,, 매크로 돌려볼까했는데 무식해보여서 기각 일단 개발자도구를 먼저 켜보았는데 아마 10000어쩌구 있는걸 보니 여기를 조작해서 10000번입력한것처럼 해야될거같다. 그래서그냥 counter숫자 만으로 바꿨는데 안됨.. 왜 안되냐 그래서 무한루프 돌려서 한번 누르고 counter 만 될때까지 클릭 반복하는걸로 코드 바꿔봤다. 에 또 실패임..

[Dreamhack] Write up - Batch Checker

https://dreamhack.io/wargame/challenges/1072 Batch Checker 과연 플래그를 확인할 수 있을까요? 실행만 하면 됩니다! 플래그의 형식은 DH{…} 입니다. dreamhack.io 문제에서 주어진 파일을 실행시켜보면 위 처럼 wrong만 출력된다. 해당 파일을 notepad++로 열어보았다.. 뒤에 줄줄이 긴거는 사실 뭘 의미하는지 잘 모르겠고 set하고 cls가 있는걸로봐서는 그냥 뭐 변수같은거 지정한다음에 화면 깨끗하게 하는 것 같다. 마지막 줄만 @로 시작해서 명령이 안뜬거같다. 쭉 읽어볼라고 했는데 생각보다 길어서 직접 무슨 코드인지 보는거는 문제가 있어보임 그래서 그냥 echo로 콘솔에 보이게 출력해보는걸로했다. echo로 바꾼 다음에 프로그램을 실행 시..

[Dreamhack] Write up - 산타 할아버지도 힘들어요 풀이

문제파일을 다운받아보았다. 음성파일 두개있는데 안듣는걸 추천함 one듣고 귀 찢어지는줄 알았삼 두개 다 비슷한 소리인데 one이 좀더 소리가 높고 주기가 빠른 거같다. 딱히 소리자체에서 건질 정보가 없어보였다. (autadity랑 Hxd에 넣어봤을 때 역시나 유의미한 정보는 없었음.) 문제에서 NOAA15에 대한 이야기를 하길래 검색해봤다. 위성인가보다. 그럼 소리는 위성 소리일 가능성이 높을 것 같다. 위성 소리에서 메세지를 받아야되는건데 뭘로해야될지 몰라서 이것저것 검색해봤다. "NOAA 15 디코딩" 이렇게 검색해봤는데 WAV파일을 이미지로 변환해주는 프로그램을 찾았다. https://noaa-apt.mbernardi.com.ar/ noaa-apt image decoder Receive and de..

[Dreamhack] Write up - dreamhack-tools-cyberchef 풀이

주어진 링크로 들어가면 다음과 같은 페이지가 나온다. 문제파일에서 주어진 html은 다음과 같다. Rail Fence는 전치 암호, Base64 이진데이터를 문자열로 바꾸는 인코딩 방식, ROT13 카이사르 암호의 일종으로 13칸씩 알파벳을 밀어 암호화 하는 방식이다. 전치암호와 카이사르 암호에 대한 설명은 아래 글에 정리되어있다. https://yenas0.tistory.com/64 #3-1. 고전암호 1. 시저암호 (시프트 암호) 2. 아핀 암호 3. 단일 치환 암호 4. 다중 치환 암호 5. 전치 암호 6. 에니그마 7. 암호 알고리즘 안전성 원칙 1. 시저 암호 (Caesar Cipher) 평문 및 암호문 공간 ㄴ알파벳으로 구 yenas0.tistory.com 아무튼 어떤 평문을 Rail Fenc..

[Dreamhack] Write up - broken-png 풀이

문제파일을 열어보면 이렇게 잘린 사진이 나온다. 전에 ctf-d 사이트에서 풀었던 사진 크기 조절하는 문제랑 비슷한 것 같다. ('플래그를 찾아라' 문제 였던거같음. 비행기 사진같은거 길이 조절하는 문제...) 일단 Hxd에서 이미지 크기를 변경해봐야겠다. 먼저 세로 크기를 증가시켜보았다. 세로 길이만 조절해도 flag가 나오게 된다. DH{image_height_property}

[Dreamhack] Write up - ex-reg-ex 풀이

제공된 링크로 들어가면 위처럼 뜬다. 아마 어떤값을 입력해서 flag가 뜨게 하는 것 같다. 문제에서 제공하는 파이썬 파일을 열어보았다. if request.method == "POST": input_val = request.form.get("input_val", "") m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val) if m: return render_template("index.html", pre_txt=input_val, flag=FLAG) 코드를 보니 m이 입력되면 flag를 얻는 것 같은데 저 부분을 모르겠다. 검색해보고 챗지피티랑 대화도 좀 해봄 re.match()함수는 정규 표현식 패턴과 문자열이 매치되는지 확인하는데 사용된다고 한다..

반응형