분류 전체보기

    Forensics : 잔상

    Forensics : 잔상

    이미지 파일이 두개 주어졌다. 언뜻보면 같아보이지만 다르니까 2개를 줬을꺼다. 일단 딱히 뭐 할게 없어서 HxD로 들여다 봤다. 보면 뭐가 다른지 알아야 하지 않겠지 싶어서 해당 기능을 이용해서 차이점을 봤다. 근데 다른 쌍을 하나씩 적어보니까. N / H Q / a I / c c / k ? / C ? / T ... 이런식으로 이어지드라. 누가봐도 flag형식이 아니냐 싶어서 일일히 찾아서 적어봤다. hex값이 보기가 더 편해서 hex 값을 옮겨온 다음 디코드 해줬다. 48 61 63 6b 43 54 46 7b 77 68 33 72 33 5f 40 72 65 5f 79 6f 75 5f 6c 30 30 6b 69 6e 67 3f 7d 디코딩 하면 HackCTF{wh3r3_@re_you_l00king?} 역..

    Pwnable : Random Key

    Pwnable : Random Key

    프로그램을 실행해 보았다. 이런 값이 나오네. gdb로 돌려보자. ㅇㅋ NX 걸려있다. 스택 실행권한 없다. 이제 어떤 함수가 있는지 보자. main문만 잘 보면 될것 같다. 볼까 아 랜덤함수가 눈에 들어온다. 아마도 rand 값이랑 일치하는 값을 찾아줘야 할 것 같다. IDA로 한번 더 볼까? int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { unsigned int v3; // eax int v4; // [rsp+0h] [rbp-10h] int v5; // [rsp+4h] [rbp-Ch] unsigned __int64 v6; // [rsp+8h] [rbp-8h] v6 = __readfsqword(0x28u); se..

    Pwnable : 1996

    Pwnable : 1996

    nc ctf.j0n9hyun.xyz 3013 한번 실행을 해보니 다음과 같이 나온다. 이렇게 입력을 해주면 환경변수 값을 출력을 해주는 것 같다. 대신 해당 이름의 변수가 없어서 출력이 안된 것 같네용 일단 보안옵션은 NX가 있습니다. 스택의 실행권한을 뺏는 옵션이죠 함수 종류도 확인해 보구용 눈에 띄는건 spawn_shell(), main 정도 있구요한번 봅시다잉 음 shell_spawn은 gdb로 안보인다. 이건 ida로 보자. int spawn_shell(void) { char *argv; // [rsp+0h] [rbp-10h] __int64 v2; // [rsp+8h] [rbp-8h] argv = "/bin/bash"; v2 = 0LL; return execve("/bin/bash", &argv,..

    challenge 57 (600pt)

    challenge 57 (600pt)

    입력창이 존재한다. 소스코드를 주었으니 한번 보면 되겠다.

    Forensic : Terrorist

    파일을 다운받아보니까 이상한 헤더를 가지고 있다. ftypM4A 이런게 있는데 M4A 파일이라고 한다. 음성 녹음 파일이다. 사진이 아니라 단순히 확장자만 변경해주면 재생이 된다. 진짜 알수없는 소리가 들린다. 편집기로 좀 해보고싶은걸 해봤다. (sonic visualizer 사용) 배속으로 빨리 들어도 보고 뒤집어도 들어봤다. 뭔가 나온다. "미션을 수행하는 요원들에게 알립니다. 다음 테러 목표지점은 서울남산타워입니다." HackCTF{서울남산타워}

    Forensic : Magic PNG

    Forensic : Magic PNG

    파일을 열어보니 당황스럽다. 음 어딘가가 깨져있는 것 같다 파일을 HxD로 확인해 보자. 파일 헤더부분이 잘못되어 있다. PNG 헤더의 첫 8바이트는 89 50 4E 47 0D 0A 1A 0A 이다. 여기는 89 50 4E 47 2E 0A 2E 0A 로 나와있는데 수정해보자. 저장해보니 사진의 일부가 나온다. 다른 부분도 잘못 되어있는것 같으니 확인해보자. PNG 파일에는 반드시 포함되어야 하는 청크가 있는데 IHDR, IDAT, IEND 이다. 3개가 모두 있는지 확인해보자. 10008 블럭부터 idat 로 나와있기 때문에 그 밑에서부터는 사진이 짤려 보이는 것 같다. 수정해주자. 사진이 제대로 나온다. HackCTF{c@n_y0u_$ee_m3?}

    Forensic : 나는 해귀다

    Forensic : 나는 해귀다

    hex 를 뒤집어놓았다고 한다. HxD 로한번 보자. 아 IEND 부분이 나오고 바로 뒷부분에 DNEI 가 나오는 것을 볼 수 있다. 그럼 맨 밑을 보자. PNG 헤더 앞부분도 거꾸로 들어가 있는 것을 확인할 수 있다. 그럼 이부분을 쭉 긁어서 hex 부분만 거꾸로 출력해주면 되겠다. a = "긁은 부분 (너무 길어서 생략)" c = a.split(" ") length = len(c) res="" res1="" for i in range(0,length): res += str(c[length-i-1]) res += " " print(res) 이렇게 쭉 나오는 것을 HxD 에 다시 긁어 넣은 다음 파일을 저장하면 다음과 같이 나온다. 거꾸로 있네 제대로 써보자. HackCTF{Y0u_tu2n3d_th3_$..

    Command & Control - level 2

    Command & Control - level 2

    ch2.dmp 파일이 있다. 지난 학기에 실습을 했던적이 있었는데, DumpIt으로 메모리를 dmp 해서 추출하는 것이였다. 이때 volatility를 사용하라고 하셨는데 그냥 string 추출해서 보는 방법도 있었다. 일단 문제를 보면 WorkStation 의 HostName 을 알아야 한다고 한다. 이런건 보통 레지스트리 정보에 들어가 있다. 해당 경로에 저장되어 있다고 한다. 한번 보도록 하자. 툴을 사용해야 하는데 사용할수 있는게 문제에서는 volatility를 준거 같다. volatility는 뭔가 사용이 어색하다....ㅎㅎ 그래서 이 문제는 String 추출로 풀겠다. 커맨드 창에 다음과 같이 입력하면 된다. 그리고 나서 메모장으로 열어서 ComputerName을 검색해주면 되겠다. 이렇게 보..

    XCZ.kr : prob 17 (100pt)

    XCZ.kr : prob 17 (100pt)

    먼저 HTTP 상의 정보를 보기 위해서 HTTP object를 보면 될듯하다. 어쩌다보니 무식하게 찾다가 찾아버렸다. 필터에 검색어로 해서 찾아도 금방 찾을 거 다. 다른 패킷 파일도 있다 하지만 주변 패킷을 보면 해당 로그인이 승인되었는지 아닌지를 확인할 수 있다. 즉 로그인이 승인된 것의 pw 값을 확인하면 되겠다. 회원가입한 내역을확인할 수 있다. 근데 아이디가 우리가 원하는 아이디가 아니다. 오케이 해당 값을 찾았다. 회원가입도 확인되었다. IDISLIE

    XCZ.kr : prob 18 (150pt)

    XCZ.kr : prob 18 (150pt)

    주어진 코드에 변수가 바코드로 되어있어서 치환했다. 일단 test($d) => $d = givemepassword 이고 test($e) => $e = keyplz! 이면 문제가 해결된다. $d = $b.$a 이고 $e = c 이다. 다만 이해가 안가는 부분이 if 문 내부가 or 로 이루어져 있는데 왜 둘다 만족을 시켜줘야지만 통과가 되는지 모르겠다. 일단 기본적으로 a,b,c를 모두 채워줘야 한다. a는 쿠키, b는 get['g'] c는 post['p']이다. web_basic_problem_haha