목록pwnable (25)
공유 메모리에 대한 개념이 필요하다. 원래 보통 프로세스에서 메모리는 해당 프로세스만 사용함 이게 무슨 말이냐면 메모리에 여러 변수들 사용할 수 있는 건 다른 프로세스가 아닌 자기 프로세스만 접근 할 수 있음 근데 아주 예외로 다른 프로세스가 접근할 수 있게 만드는 것이 공유 메모리라고 함 이게 IPC기법임 hint에서 key_t값을 주었는데 저게 공유 메모리를 할당할 수 있는 고유 key값임 일단 IPC코드를 짜려면 함수에 대해서 알아야 함 IPC사용하려면 #include #include 그리고 연결하기 위한 최소한의 두 개 함수를 알아야 함 int shmget(key_t key, size_t size, int shmflg); 1) shmget : 인자로 전달된 key의 값으로 공유 메모리를 얻고 공유..
드디어 BOF 문제가 나옴 fgets에서 40byte를 읽어 취약점이 발생함 먼저 level10권한 파일 찾음 bof파일 실행시키고 go단어로 다 때려박았더니 됐음 이대로 끝내긴 아쉬우니 디버깅 돌려보겠음 gdb 켜서 intel버전으로 문법 바꿔버렸음 buf가 [ebp-40] buf2가 [ebp-24] 40 - 24 = 16 16 dummy 주고 go 문자열 주면 됨 password : interesting to hack!
찾아보도록 하자 용량 기준으로 파일 검색이 가능하다 -size 인자 주고 크기를 같이 주면 된다. c는 byte를 의미한다. found.txt를 찾았다. 읽기만 가능하다. 계정 정보가 보인다. 암호도 보여주고 있다 암호를 복호화하기로 한다. 복호화 프로그램은 john the ripper 를 사용했다. window에서 진행했다 apple이라는 단어가 보인다. password : apple
/bin/level7 을 실행해 본다. password 치라고 한다. password가 될만한 단서를 찾도록 한다. 이게 개인 ftz서버에서는 안 뜬다고 하니 주의하도록 하자 나도 인터넷에서 가져온 거다. 그냥 올라간 게 1 내려간 것을 0으로 생각하면 109 . 97 . 116 . 101 이다 ascii코드를 text로 바꿔준다 mate라는 단어가 나온다. password : break the world
들어가자마자 hint가 뜬다. 무언가 입력하면 텔넷 접속 서비스 뜬다 무언가 입력할 수 있다는 점을 보고 그냥 hint가 떴을 때 강제 종료 Ctrl+c 를 살포시 눌러 주었더니 프로그램이 종료된다. 그 후 flag를 확인 했다. password : come together
/usr/bin/level5를 실행해보겠다. 아무리 실행해도 level5.tmp가 생성되지 않는다. 아마 생성되자마자 지워지는 듯하다. 심볼릭 링크로 level5.tmp를 연결해준다. 연결을 해주었다. 다시 level5를 실행해 주면 flag의 크기가 늘어난 것을 볼 수 있다. cat으로 확인해주었다. password : what the hell
hint 파일을 열었다. level5 setuid파일도 일단 찾아보기로 했다. 없다. /etc 디렉터리로 들어가서 파일들을 확인했다. backdoor 파일이 존재 한다. service 파일이 존재한다. service finger은 서비스 이름으로 보통 /etc/service 파일에 있는 서비스명으로 선택한다. user는 level5의 권한으로 실행된다는 뜻이다. server는 /home/level4/tmp/backdoor : xinetd에 의해 실행될 파일이다. 즉 tmp디렉터리에서 backdoor파일이 level5으로 실행될 수 있다. 먼저 tmp디렉터리로 넘어가서 backdoor.c를 만들었다. 이게 cat > backdoor.c 로 만들었는데 안돼서 그냥 vi편집기 열어서 만들었다. 그 후 gcc ..
바로 hint를 까 보았다. #include #include #include int main(int argc, char **argv){ char cmd[100]; if( argc!=2 ){ printf( "Auto Digger Version 0.9\n" ); printf( "Usage : %s host\n", argv[0] ); exit(0); } strcpy( cmd, "dig @" ); strcat( cmd, argv[1] ); strcat( cmd, " version.bind chaos txt"); system( cmd ); } more hints - 동시에 여러 명령어를 사용하려면? - 문자열 형태로 명령어를 전달하려면? ------------------------ 까지가 hint의 내용이다. 명..