2025/03/09 6

[dreamhack] level 1 Check Function Argument

main 함수를 디컴파일 하면 위와 같은 코드가 나온다. 문구를 살펴보니 puts문 아래의 함수의 파라미터에 flag가 존재하는듯하다. 따라서 해당 함수의 주소에 bp를 걸고 gdb를 통해 디버깅을 시도해봤다. sub_4015E2 함수 주소 : 0x00000000004015E2 b *0x00000000004015E2 위의 실행 결과에서 알 수 있듯이Flag is DH{63db030352ca9f9f5e6b8a59c0527bee}'이렇게 flag가 출력되는 것을 확인할 수 있다.

[dreamhack] level1 Small Counter

해당 바이너리를 실행하면 위와 같은 숫자들이 출력된다. IDA 분석위의 코드를 확인해보면 [rbp+var4]의 값이 5와 같아야 "Nice!"라는 문구를 출력한다. 따라서 [rbp+var4]의 값이 5와 같아지도록 gdb를 활용하여 수정해야한다. pwndbg 디버깅일단 cmp [rbp+var4], 5가 있는 주소로 이동해야 한다. ida에서 해당 주소를 확인해보면 0x00000000000015AA인것을 알 수 있다.디버깅을 하기 앞서서 checksec 명령어를 통해 PIE 여부를 확인해보면 PIE가 enabled 되어 있는 것을 확인할 수 있다.따라서 vmmap을 통해 해당 바이너리의 시작점을 확인한다. 따라서 0x00000000000015AA + 0x555555554000를 연산한 주소에 bp를 걸어준..

[dreamhack] level 1 Easy Assembly 문제

해당 파일을 실행하면 다음과 같은 문구가 출력된다. ./prob을 하고 값을 넣으라고 해서 아무 문자나 넣어봤는데 아래와 같은 문구를 출력해주는걸로 봐선 올바른 key값을 찾아야 하는 것 같다. IDA 분석 eax : 사용자 입력값len : 사용자 입력값 길이esi : 사용자 입력값edi : enc_flag 값ecx와 ecx xor 연산check_pw 함수 실행eax 와 0 비교0이면 flag 출력a2 변수에 enc_flag++ ^ len ^ v0++ 연산을 한 값을 or 연산하여 저장len이 0이 될 때까지 반복a2를 반환 exploit 코드enc_flag = [ 0x74, 0x78, 0x4B, 0x65, 0x77, 0x48, 0x5C, 0x69, 0x68, 0x7E, 0x5C, 0x79, 0x7..

[dreamhack] level1 legacyopt 문제

legacyopt 바이너리를 실행하면 입력할 수 있는 칸이 나온다. 입력을 하면 7912394e5c 와 같은 특정한 문자열을 출력해주는 것을 확인할 수 있다.그리고 같은 디렉터리에 저장되어 있는 output.txt를 확인해보면220c6a33204455fb390074013c4156d704316528205156d70b217c14255b6ce10837651234464e라는 문자열이 저장되어 있다. IDA 분석사용자에게 입력받은 값을 s에 저장v3에 입력값의 길이를 저장 ptr, s, v3를 인자로 하는 sub_1209함수 실행s의 길이만큼 반복ptr[i]를 출력 sub_1209 함수 분석unsigned __int64 __fastcall sub_1209(_BYTE *ptr, char *input, int inp..