본문 바로가기

분류 전체보기264

[Reversing.kr] (Reversing) x64 Lotto 풀이 실행해보면, L O T T O 를 출력하고, 숫자를 입력하라한다. 그리고는 화면이 cls 된다. 편하게 디컴파일해 정적분석을 해보자. 1 2 3 4 5 do { wprintf(L"\n\t\tL O T T O\t\t\n\n"); wprintf(L"Input the number: "); wscanf_s(L"%d %d %d %d %d %d", &v13, &v14, &v15, &v16, &v17, &v18); wsystem(L"cls"); Sleep(0x1F4u); Colored by Color Scripter cs 숫자 6개를 입력받고, cls 한 뒤, 0.5초 쉰다. 1 2 3 do *(&v18 + ++v1) = rand() % 100; while ( v1 = 24 ) goto LABEL_9; } v2 = .. 2021. 2. 7.
[CTF] justCTF [*] 2020 writeup ainsetin님이 또 초대를 해주셔서 주말동안 즐겁게 CTF 를 했다. reklect 한 문제를 풀었다. reklect MACH-O 아키텍쳐의 go언어로 된 바이너리였다. 맥북이 있었다면 주소를 쉽게 찾을 수 있었을텐데.. 실행을 못시켜서 정적분석을 했다. 특정 주소에있는 값 여러개와 16진수를 xor 연산한다. d 에 8바이트 저장하고 d[8] 에 8바이트 저장하고 d[16] 에 8바이트 저장하고 ... 길이가 48바이트 정도 됐었다. xor연산해서 문자열을 만들어보니 base64처럼 보이는 값이 나온다. 바로 밑에 그 값들을 base64 디코딩하는 함수가 있었다. 나온 값은 this_is_very_s3cret_file13371337.js 이였다. 더 밑에 request 를 보내는 함수가 있었는데, .. 2021. 2. 2.
[CTF] 0x41414141 CTF 2021 writeup 고맙게도 ainsetin 님이 초대해주셔서 주말동안 선배님들과 재밌는 CTF 했습니다. 리버싱 문제 쉬운거 2.5개 풀었습니다. backupkey2 useless라서 의미없는값인줄 알았는데 이게 flag였다 ;; cage2 go 언어로 짜여있다. 4글자, 2글자, 2글자 ... 이런식으로 입력받고 특정값과 비교하는데, 중간에 다르면 종료해버린다. 그래서 4글자 2글자 2글자... 이런식으로 모아보니 flag 다! client 마찬가지로 go언어로 짜여져있다. github 에서 뭘 가져와 예쁘게 글자를 출력해준다. 이렇게 출력해준다. login 을 입력하면, 161.~~/login 에 아이디와 비밀번호를 보내 jwt 토큰을 생성해준다. admin 을 입력하면 bad credential 이라고 출력된다. 우.. 2021. 2. 2.
[Reversing.kr] (Revering) SimpleVM 풀이 ELF32 파일이다. 아이다로 열면 entry point 에러가 난다. gdb 로 열면 이상한곳에 와있다. 실행시키면 Access Denied 가 출력되고 끝난다. strace 로 확인한 결과이다. getuid32() 함수를 호출해 uid 를 가져온 뒤, Access Denied 가 출력되는걸 보면, root 로 실행해야한다는 합리적의심이 가능하다! sudo strace ./SimpleVM getuid32() 결과가 0이고, Input 이라고 출력되는 것을 볼 수 있다. helloworld! 을 입력했더니 Wrong 이라 뜬다. 패킹된 것같은데 프로세스를 덤프해서 정적분석해보자. procdump 리눅스버전을 쓸 수도 있고, gcore 으로 간단하게 할 수 있다. 터미널 2개를 띄우자 (터미널1, 터미널2.. 2021. 2. 1.