writeup/해킹캠프CTF 2014 5

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 = ..