전체 글

Hacking

DreamHack Welcome

보호되어 있는 글입니다.

Hacking

LOB #02 Cobolt

지난번 글의 아이디와 비밀번호를 입력해봅시다! cobolt인데요! 이번엔 버퍼의 크기가 16이고 지난번과 조건이 같습니다! 16이면 쉘코드를 넣을 수가 없겠죠?? 그래서 환경변수를 설정해보겠습니다! shellcode를 만들기 위해 파일을 만들어 줍니다! 그후 export ShellCode=`python -c 'print("\x6a\x0b\x58\x99\x52\x66\x68\x2d\x70\x89\xe1\x52\x6a\x68\x68\x2f\x62\x61\x73\x68\x2f\x62\x69\x6e\x89\xe3\x52\x51\x53\x89\xe1\xcd\x80")'` ShellCode에 쉘코드를 넣어주고 gcc -o ShellCode ShellCode.c를 하여 ShellCode의 주솟값을 알아낼 겁니다! 0..

Hacking

LOB #01 Gremlin

처음은 gate/gate로 로그인을 해줍니다! gremlin과 gremlin.c파일이 있는데요! gremlin은 접근 권한때문에 건드리지 못할거라서 gcc -o gremlin2 gremlin.c 를 통해 gremlin2를 gdb해줘야됩니다! 이렇게 grmelin2가 생겼습니다! 일단 buffer는 256바이트의 크기를 가지고있다는 것을 알 수 있고 strcpy()함수를 이용하는 것을 알 수 있습니다! 이때 strcpy함수가 작동 후 버퍼에 값이 들어간다는 사실을 알 수 있는데요 여기서 strcpy의 취약점! 길이검사를 하지 않는다는 점을 이용해 버퍼오버플로우를 발생시켜볼겁니다! 일단 gdb를 해줍시당 strcpy함수가 main+54에서 호출이 되기 때문에 저기에 브레이크 포인트를 걸어줍니다! 브레이크를 ..

Hacking

Bandit 과제~_~(Bandit5까지 로그인)

안녕하세요! Bandit 과제를 시작해보도록 하겠습니다~_~ 기존에 알고있던 배경지식이,,, 과연 남아있을지,, 모르겠찌만! 일단 해볼게요^0^ 후 난 할 수 있을거야 연결을 해줍니다! 우연히 들어갔는데,,, Mines 좀 재밌어보이지않아요,,,? 얘가 하라고 시켰어요 전 잘못없어요^~^! 양심있게 1단계로 했어요^~^ 후 다시 시작. Level 0 -> Level 1 로그인 했습니다~ 바로 비밀번호가 나왔네요! 그럼 로그아웃을 하고 bandit1로 넘어갑니당~ Level 1 -> Level 2 냠 파일이름이 - 이거예요!! 그럼 어떻게할까요?! 저는 정답을 알아요! 왜냐면 전에 푼 기억이 아직 남아있기 때문이죠! 크으으으으으으으으 정답은 cat ./-를 해주면 됩니당! ./가 현재 디렉토리를 의미하니까..

Hacking

ctf-d.com GrrCON 2015 #1 ~ #2

저 파일을 다운받아 분석을 할건데여 volatility와 string.exe를 이용하였습니다 제 바탕화면은 왜 onedrive에 들어가있을까요...? volatility를 이용해 파일의 정보를 봤습니다 processlist를 보면 OUTLOOK.exe라는 파일이 눈에 띄는데여 이렇게 해서 만든 dmp파일을 string.exe를 이용해서 이렇게 txt파일로 만들어줍니다. 문제를 다시 읽어보면 메일이라고 되어있기 때문에 gmail.com을 검색해봤더니 여러개의 th3wh1t3r0s3@gmail.com가 나오구요 이어서 2번은 이메일로 첨부해서 보낸 파일 이름을 물어봤는데요 이건 keyformat이 xxx.exe라고 했으니 .exe를 검색해보았습니다. 그랬더니 AnyConnectInstaller.exe가 계속..

C | C++

C언어 배열과 포인터

배열 여기서 int a[5]라고 했는데 이는 'int a1, a2, a3, a4, a5;' 같은경우는 직접 쓸 수 있지만 만약 a100까지 정의해야된다면 사실상 힘든 일이므로 간단하게 표현하기위해 int a[100]라고 하면 int a[1]~int a[100]까지 표현하기 쉽기 때문에 이렇게 쓴다. ​ a[0] = 2; a[1] = 3; a[2] = 7; a[3] = 6; a[4] = 8; 라는 표현도 숫자가 커지면 표현하기 힘들기 때문에 int a[5] = { 2, 3, 7, 6, 8 }; 로 적으면 위와 똑같은 뜻을 가지므로 더 편하게 표현할 수 있다. 또한 이렇게 표현할 때 int a[5]에서 5를 생략하여 int a[] = { 2, 3, 7, 6, 8 }; 로 간단하게 표현할 수 있..

C | C++

C언어 - 연산자와 제어문

이렇게 c언어에서는 저런 문자를 쓸 수 있다! 여기서도 a = a + 3은 수학적으로 말이 안되는 식이다 하지만 저기서 '='는 대입이라는 의미이므로 a + 3이 a에 대입되어 5 + 3 =8이 a에 저장된다고 보면 된다! 따라서 실행시켜보면 이렇게 나오게 된다~ ​ 이번엔 += -= *= /= %= 에 대해 알아보도록 하자. a = a + 6 a = a * 7 이런 식을 여러번 써야될 때 다 입력하기 귀찮으니까 a = a + 6 => a += 6 a = a * 7 => a *= 7 a = a - 8 => a -= 8 a = a / 9 => a /= 9 a = a%10 => a %= 10 ​ 이런식으로 된다! 이렇게 실행을 해보면 5더하기6은 11 11곱하기 7은 77 77나누기 8의 몫은 9 9나누기9..

C | C++

C언어 - 입출력과 변수

​ ctrl + shift + A 로 소스파일에서 코드를 바로 만들 수 있다. ctrl + shift + N 을 하면 프로젝트도 바로 만들 수 있다. 이렇게 입력을 시켜주고 '디버그하지않고 시작'의 단축키인 'ctrl + F5'를 눌러주면 이렇게 hello, world!가 나온다! 는 사전같은 역할 ​ c언어에서 ()가 있으면 그건 함수라고 보면 된다 함수는 특정한 기능을 하는 코드들을 묶어 하나의 명령어처럼 사용이 가능하게 해준다고 한다! ​ \n은 Enter 역할 ​ printf()의 소괄호안은 출력되는 내용 저렇게 많이 써도 되고, 이렇게 써도 나온다! ;를 꼭 붙여야된다!!! 한글의 마침표같은 느낌? 동해물과 백두산이 마르고 닳도록 이 문장이 출력되도록 해보자. 이렇게 두가지 방법으로 할 수 있다..

pushpush
Push