KDHzoot's Github

Code for study, project, etc

자세히보기

정보보안/CTF 8

[ebCTF 2013] pwn 200

brainfuck 관련된 문제이다. https://ko.wikipedia.org/wiki/%EB%B8%8C%EB%A0%88%EC%9D%B8%ED%8D%BD brainfuck은 컴퓨터 프로그래밍 언어로 미리 알고 있으면 문제를 푸는데 도움이 많이 된다. ida로 뜯어보니 shell이라는 함수가 있다. 누가봐도 ret값 변조 문제라서 brainfuck을 사용해 어떻게 메모리 값을 변조할지 생각해봤다. bf_main 함수를 보면 switch문이 두개가 있다. 살펴보니 첫번째 스위치문은 그저 문자 명령을 정수로 바꾸는 작업이어서 볼 필요가 없었다. 문제는 두번째 스위치문에 있다. >를 사용해서 p의 값을 증가시켜 ret까지 주소값을 이동할 수 있지만, str에서 참조할 때 4를 곱해서 참조하기 때문에 str의 ..

정보보안/CTF 2018.11.12

[CSAW CTF 2013] Exploitation4

static 컴파일된 문제라서 main함수의 시작을 먼저 찾아야한다. 먼저 우분투로 실행시켜서 뜨는 문자열을 기억한다. 그 다음 ida에 들어가서 ctl+1 한 뒤 string을 선택하면 프로그램 내에서 선언된 문자열이 모두 뜬다. 여기서 ctl+f 하여 welcome이 들어가는 문자열을 선택한 뒤 x를 누르면 그 문자열을 사용하는 함수로 이동하게 된다. (x는 함수나 변수가 호출되는 코드로 이동함) 이제 main함수를 분석하면 된다. 코드가 재귀함수처럼 똑같은 함수를 호출한다. 중요한 부분만 보면 자신의 ret값을 (본인 함수가 끝났을 때 돌아가야하는 코드 주소) 함수 시작 때 배열에 넣고 종료 전에 다시 가져와서 ret 값 덮어쓰기를 방지하는 것이다. v2의 주솟값을 인자로 넘겨주는 함수는 들어가보니..

정보보안/CTF 2018.11.12

[CSAW CTF 2013] Exploitation3

복잡한 쉘코드는 건너뛰고 생각하자. 코드를 따라가면서 읽다보면 대충 id와 password같은 문자열이 보인다. csaw2013S1mplePWD 입력하면 로그인이 되고 "Entry info: "가 뜬다. ida로 코드를 읽어보면 먼저 사용자가 버퍼에 입력할 entry의 길이를 입력하고 버퍼에 entry를 입력한다. 여기서 주의해야할 점은 entry의 길이가 1024미만이어야 한다는 것이다. 1234n = (signed __int16)entry_len;if ( (unsigned int)((signed __int16)entry_len + 1)

정보보안/CTF 2018.11.10

[CSAW CTF 2013] Exploitation2

main 코드가 엄청 길어서 당황했다. 게다가 소켓코드라서 뭔지 하나도 모른다. 대충 exploit2 실행시켜두고 cmd를 새로 켜서 페이로드를 작성했다. 소켓으로 로컬 31337포트에 연결하니 에러 없이 handle 함수로 넘어간다. main함수는 무시하기로 했다. 12345678910111213141516171819202122232425262728void __cdecl handle(int newsock){ unsigned int v1; // eax char buffer[2048]; // [esp+1Ch] [ebp-80Ch] unsigned int cookie; // [esp+81Ch] [ebp-Ch] cookie = 0; memset(buffer, 0, sizeof(buffer)); v1 = time..

정보보안/CTF 2018.11.09

[DEFCON CTF 2015] r0pbaby

결론부터 말하자면 못풀었다.대회가 끝난뒤 local에서 푸느라 local libc를 사용해야 됐다.PIE가 걸려있어서 ROP가젯을 libc에서 구해야 되는데 pop rdi; ret 가젯이 libc에 없었다.왜 그런지는 나중에 알 기회가 있겠지 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495__int64 __fastcall main(__int64 a1, char **a2, char **a3){ signed int v3; // eax ..

정보보안/CTF 2018.11.08