전체 글 74

Codegate 2014 weirdshark 포렌식 문제 풀이

.. 진짜 야매로 풀었는데 일단 이건 진짜 풀이다.http://maj3sty.tistory.com/1098 사실 파일에서 카빙만 잘해줘도 풀리고 아니면 직접 수정한다던지 그래줘도 풀리고 하겠지만, 대부분의 툴에서 여기서 제공된 pcap(ng)파일이 열리지 않는다. 난 이렇게 생각했다.pcapng를 복구해주는 프로그램이 있을거다.-> pcapfix라는 프로그램이 있고 pcapng도 지원한다.-> 써본다. 성공했지만 일단 와이어샤크에서 에러를 내고 안뜬다. pcap으로 변환하는 프로그램은 분명 있을거다.-> 그 프로그램에서는 헤더체크를 많이 할 필요가 없다. 코딩할때 얼마나 귀찮겠어. 그리고 pcap에 그 기능이 없을지도.-> 변환후 여니까 성공 .. :( pdf파일을 http로 전송하길래 그냥 추출했는데 ..

writeup 2014.02.24

hischall 2013 hatehexray 헥스레이 디컴파일이 안되는 이유 + 되게 하는 법

hischall 대회 2013년도 문제였던 hatehexray의 디컴파일법이 있는데요, 사실 그냥 테인트같은거 짜서 확인할수도 있지만 그냥 헥스레이를 되게 하는 방법으로 초점을 맞춰볼게요. x86 명령어에는 prefix라는게 있는데, 명령어 앞에 있어서 그 명령어에 대한 부가설명을 해줘요.0x00411EE0 에 들어가보면 db ~ 로 시작하는 부분이 있는데, 사실 prefix가 쓰이는 명령어가 따로 있어요.예를 들어 0x2E, 0x3E prefix는 branch prediction이라고 해서 조건 문에서 둘 중 하나의 경우에 비중을 둠으로서 CPU 성능을 향상시킬수 있다고 나와있고, gcc의 __builtin_expect라는 구문으로 쓸수 있어요. (c 표준은 아니고 리눅스 커널 보면 이런소스 많이 나오..

writeup 2014.02.20

2014 동계 해킴캠프 미니 CTF - 출제 실패한 문제

서버 상 문제로 출제가 안됬다고 들었습니다 ㅠㅠ 아쉽네요.이번 문제는 HashDOS 컨셉의 문제인데, HashDOS가 어떤 원리인지에 대한 문제입니다. 해시 테이블을 이용할 때 주의할 점은, 해시 충돌이 일어날 때 어떻게 처리할지, 그리고 해시값 연산의 속도에요.이번 문제의 컨셉은 "해시테이블 + 링크드 리스트" 에서 해시가 충돌할 때 HashDOS가 발생할 수 있다! 라는 컨셉이에요. 문제 자체를 강조하기 위해 코드는 제공하려고 했구요! 코드는 아래와 같아요.#include #include #include struct table { char *src; int len;}; struct linked { struct table *tb; struct linked *next;}; struct linked *ha..

2014 동계 해킹캠프 미니 CTF SleepSleepSleep 문제 풀이

strace ./SleepSleepSleep 으로 실행해보니까 nanosleep으로 30초나... 쉰다. 그냥 gdb로 보니까 sleep 함수 실행을 30초 하는 부분이 있다.귀찮으면 gdb 열고 이렇게 하면 된다. rCtrl+C를 누른다. 이러면 함수 주소가 로딩된다.b sleepry를 눌러서 강재 재실행 해준다.이제 sleep에 브릭포인트가 걸린다. Breakpoint 2, __sleep (seconds=0) at ../sysdeps/unix/sysv/linux/sleep.c:4242../sysdeps/unix/sysv/linux/sleep.c: No such file or directory. 이렇게 걸리면 이제 인자를 조작해주면 된다.몇번 더 걸리는데, 똑같이 해준다.set *($esp+4)=0(0..

2014 동계 해킹캠프 미니 CTF WinRev 풀이

대충 열어보면 Visual C++ 컴파일러로 컴파일한듯한 바이너리가 나온다.main함수를 습관적으로 찾다보면 0x4016B0이 나온다. 어떻게 찾나면, ExitProcess라는 함수가 맨 마지막에 호출되는데 이때 넣는 인수값이 "오류 코드"이다. 실행 후 %errorlevel% 환경변수로 쓰일 수 있는 값인데 여기 쓰이는 인자를 0x4016B0 함수에서 리턴한다. 이 함수를 main함수라 보면 된다.main함수는 인자가 이렇다. int argc, char *argv[], char *envp[]argc가 2인지 검사한 후 맞으면 argv[1] (첫번 째 인자이다) 값을 하나하나 비교하는데, 첫글자부터 0x77, 0x69, 0x73, 0x65, 0x4F랑 비교해서 틀릴때마다 nope 를 출력하고 끝낸다. 코..

2014 동계 해킹캠프 미니 CTF Optimize 풀이(python)

그리고 문제 설명에 "값이 잘못되었다"라는 맥락이 있다던데, 2^109875 - 1 의 값을 구해서 보내주면 된다고 한다. 그리고 문제 소스코드는 너무 오래 걸려서 pow_plus함수는 안쓴다.파이썬은 그걸 한줄로 줄여준다! ㄹㄹ 사실 등비수열 합공식을 써서 줄인거다. 원래 함수는..def pow_plus(x,n):result = 0for i in range(0,n+1):result = result + x*i return result인데, 그냥 수학적으로 계산해서 아래에 나온 한 줄로 줄인다. import socket x = 2**109876-1key = xprint (key) host = '172.30.1.11'port = 9696 s = socket.socket(socket.AF_INET,socket..

2014 동계 해킹캠프 미니 CTF recovery 문제 풀이(python)

그냥 역으로 테이블 하나 구성하면 된다. #!/usr/bin/pythonfrom struct import unpack,pack table = [48, 27, 50, 8, 47, 73, 12, 4, 66, 0, 14, 77, 56, 26, 63, 67, 17, 11, 68, 22, 72, 69, 60, 64, 74, 58, 54, 42, 65, 32, 33, 40, 39, 37, 51, 59, 24, 35, 38, 61, 21, 31, 57, 20, 76, 13, 10, 43, 9, 78, 46, 44, 45, 49, 3, 75, 23, 2, 19, 25, 28, 41, 29, 6, 30, 53, 70, 7, 16, 18, 34, 1, 62, 52, 5, 55, 36, 79, 71, 15]vtable = ..

세계 해킹대회 목록을 볼 수 있는 사이트

http://ctftime.org/ 을 소개드리려 하는데요.이 사이트는 세계에서 열리는 해킹대회 목록, 대회 문제 풀이, 그리고 팀 랭킹이 올라오는 사이트입니다. 사이트 밑으로 내려가보시면 Upcoming Events가 있는데 이게 앞으로 열리는 세계대회 일정입니다. Writeups는 최근 올라온 순서대로 문제 풀이가 올라와요.사이트 우측 상단의 Sign in(로그인) 으로 가입/로그인을 하시면 시간대를 맞춰서 볼 수도 있구요. (한국은 GMT시간에 9시간을 더해야되는데 그걸 자동으로 해줘요.) 위의 메뉴에 Archive가 있는데 이때까지 열린 대회의 정보, 순위, 문제들이 나열되어있어요. (일부 문제만)그리고 Calendar 라는 메뉴가 그 옆에 있어요. 그건 달력처럼 일정을 보여줘요. 여러모로 편리해..

카테고리 없음 2014.02.14