# dreamhack

275개의 포스트
post-thumbnail

[Dreamhack] Inject Me!!!

DLL 엔트리 포인트이다. sub_1800015F0을 실행한다.v8 부분을 보면 sub_180001390을 호출한다.MessageBox를 통해 flag를 출력해주고 있다. flag는 복잡한 연산과정에 의해 설정되므로 저 flag를 어떻게 출력할 수 있는지 확인해봐야겠다

4일 전
·
0개의 댓글
·
post-thumbnail

[wargame.kr] fly me to the moon

내가 어렸을 때 풀었던 문제이다. wargame.kr 문제들이 dreamhack에도 올라와 한 번 다시 풀어보고 싶었다. 게임을 하다가 졌고 6점을 얻었다. 31337점을 얻으라고 한다. JS를 분석해보자. 난독화되어있다. 해제해보자.JS 난독화 해제 사이트 : ht

4일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] crawling

매우 쉬웠다.request.remte_addr은 127.0.0.1이어야 한다. 그런데 check_get에서 필터링을 하고 있다. 우선 naver.com:80을 넣어보면 이렇게 크롤링을 해준다. lcoalhost는 이렇게 필터링된다. 그렇다면 url 단축 기능을 이용하여

4일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] Secure Mail

html 파일이 너무 기므로 코드를 첨부하진 않겠다. 웹 리버싱 문제이다. click 하게 되면 \_0x9a220(pass.value)를 실행하게 된다. \_0x9a220 함수를 분석해보자. 이걸 분석할 수 있을까? 절대 분석 못하지만, 이 부분을 보면 뭔가 틀리면 W

4일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] patch

그래픽 문제를 많이 접해보지는 못해서 좀 힘들긴 했다. 저 가리는 모션을 패치하자.뭐가 많이 복잡하긴 하다.RegisterClassExW(&v11); 이 부분을 보자. 콜백함수이ㅏㄷ.v11을 분석해보자 ...?v11.lpfnWndProc = (WNDPROC)sub_14

4일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-9

음... 먼저 a1의 길이를 v3에 받는다. v3+1은 8로 나누어지면 안된다.이걸 통과하면 10A0 함수에 a1의 8배수 원소들만 인자로 넘겨준다.memcmp도 하므로 10A0 함수 내에서 a1 배열의 값들을 바꾼 다는 것을 예측해볼 수 있다.이 함수에 들어온 값들에

5일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-8

어우 이건 뭘까.... -5를 곱하기는 하는데 unsigned int 형태로 가져오므로 0xFB를 곱한다고 생각하면 될까 ?그냥 브루트 포싱으로 풀었다 .... 플래그가 어질어질하다 ㅎㅎ참고로 251을 곱하는 건 4바이트 형태이므로 꼭 꼭 type casting을 해

5일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-7

어우 ROL이 나온다. 식 정리해서 문제 해결해보도록 하자.$$i \\ |\\ ROL(ai, i \\& 7) = bytei\\ROL(ai, i\\& 7) = bytei \\ |\\ i\\ai = ROR(bytei \\ |\\ i, i\\&7)$$어 됐다.저 ROR

5일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-6

...? byte 배열이 두개이고, 우리가 입력한 값을 인덱스로 찾는다. 그래서 두 원소의 값이 같아야 한다. 브루토포싱 문제인 듯 하다.

5일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-5

i 번째 원소와 다음 원소의 합이 배열의 i번째 값이면 되나보다. 근데 24번째 원소는 0이다. 엄청난 힌트이다.$$arri + arri+1 = bytei$$여기서 마지막 byte 배열의 값이 0이다. 그러므로 우리가 입력할 마지막 값은 76이다.

5일 전
·
0개의 댓글
·

[Dreamhack] Exploit Tech: Bypass IO_validate_vtable

해당 기법은 glibc 2.29 버전 이상에서 더 이상 사용할 수 없기 때문에 드림핵 워게임 문제에서 제공하는 파일을 다운 받아 실습해야 합니다.Bypass IO_validate_vtablevtable은 \_\_libc_IO_vtables 섹션에 할당됩니다.해당 섹션의

7일 전
·
0개의 댓글
·

[Dreamhack] _IO_FILE Arbitrary Address Write

"/etc/issue" 파일을 열고, 파일 포인터에 300 바이트 만큼의 값을 입력할 수 있습니다.fread 함수를 통해 파일의 내용을 읽고, 출력합니다. 이때 overwrite_me 변수 값이 0xDEADBEEF라면 read_flag 함수를 호출해 "flag" 파일의

7일 전
·
0개의 댓글
·

[Dreamhack] Exploit Tech: _IO_FILE Arbitrary Address Write

파일 읽기 함수는 대표적으로 fread, fgets가 있는데, 해당 함수는 라이브러리 내부에서 \_IO_file_xsgetn 함수를 호출합니다.해당 함수는 인자로 전달된 n이 \_IO_buf_end - \_IO_buf_base 값보다 작은지를 검사하고 \_\_under

7일 전
·
0개의 댓글
·

[Dreamhack] _IO_FILE Arbitrary Address Read

"flag" 파일을 읽고, flag_buf 변수에 저장"testfile" 파일을 쓰기 모드로 열었고 파일 포인터에 300 바이트 만큼의 값을 입력할 수 있습니다. 그래서 \_IO_FILE 구조체를 조작할 수 있습니다.익스플로잇 코드를 실행시켜보면flag가 출력됩니다.

7일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-4

음 ... 엄........ 그냥 우선순위 적당히 정리해주고 해결해주면 되겠다. \[우선순위 정리]https://dojang.io/mod/page/view.php?id=188편의상 a1 -> arraybyte_140003000 -> byte_array$$(\_

7일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-3

140001000을 분석해보자.어우 복잡하다. xor이 우선순위가 가장 낮다. 즉 내가 입력한 i번째 문자에 2i를 더하고 i를 xor한 값이 byte_140003000i여야 한다.$$byte_140003000i == (i \\oplus (a1i+2i))\\i\\opl

7일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-2

0x12, 즉 18바이트가 들어가야 하나 보다.내가 입력한 i번째 글자랑 aC4 \* i 글자랑 같아야 하겠다.이렇게 배열 안의 값들이 보이게 되는데 이렇게 확인 가능하다.

7일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-1

이전 문제와 마찬가지로 입력받은 v4를 sub_140001000으로 넘긴다.입력받은 값을 a1으로 넘기는데 각 원소의 값이 저 아스키코드 값이면 되겠다.그럼 해결된다.

7일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] rev-basic-0

그냥 IDA로 풀겠다.sub_140001000에 입력한 v4를 넣는다. 아마 값을 확인하는 함수인 것 같다.Correct를 출력하도록 값을 맞춰야 한다.wowflag : Compar3_the_stri1ng

7일 전
·
0개의 댓글
·
post-thumbnail

[Dreamhack] mining game

재미있겠다.어...뭐가 좀 길긴 하다.만약 rare_earth를 채굴해낸 다음에, 그 설명을 get_shell의 주소로 바꾸고 설명을 출력시킨다면? 문제는 해결된다.어려워 보이기는 하지만, 매우 쉬운 문제이므로 다른 설명까지 쓰진 않는다.payload를 보내는 구현까

2022년 8월 8일
·
0개의 댓글
·