- Today
- Total
목록Pwnable (104)
Phantom
음…우선 공유메모리가 무엇인지부터 알아야겠다 한 공간을 여러 프로세스가 공유 한다는 것으로만 알았지 이런 실습적인 부분은 아직 본적이 없어서…;; 자 그럼 이제 공유하고 여럿이서 사용할 수 있다는 것도 알았다 그럼 어떻게 공유를 하고 사용할 것인가 우선 공유메모리 함수부터 봐야 알 것 같다 #include #include Shmget() – 공유메모리 생성 접근 Int shmget(key_t key, int size, int shmflg); Key_t key : 공유 메모리를 구별하는 식별 번호 Int size : 공유 메모리 크기 Int shmflg : 동작 옵션 IPC_CREATE : key에 해당하는 공유 메모리가 없다면 새로 생성한다 IPC_CREAT값을 입력한 후 |(pipe) 연산자를 덧붙여 ..
먼저 level10소유의 파일을 먼저 찾는다 디버깅을 하려했지만 권한이 없다 어차피 소스코드가 있으니 컴파일하고 디버깅한다 이번 문제는 다른 내용들은 크게 중요하지 않다 먼저 스택 프레임, 즉, 프로그램이 로딩될 때 얼마의 용량을 차지하는지에 대한 부분을 볼것이다 0x28, 40바이트가 할당된다 소스코드를 보면 char buf2[10]; char buf[10]; 이렇게 총 20바이트가 할당된다 더미가 들어간다는 것이다 그럼 더미가 어디에, 얼마나 들어가는지 알아보자 저 부분을 보면 ebp-40에 fget함수를 사용하고 0x10을 정리한다 즉 ebp-40부터 10만큼을 사용하는 것이다 그리고 ebp-24를 strcmp에 사용하면서 0x10을 정리한다 ebp-24부터 10만큼 사용하는 것이다 소스코드를 보면..
힌트를 보고 조금 멍했다 단서는 용량이 2700이라는 것 find에 용량으로 검색하는 것이 있나 찾아봤는데 있더라. 그래서 그걸 이용했다 Find / -size 2700 2>/dev/null 결과는 아무것도 안나왔다 네이버에 검색해보니 단위가 c, b, k등등 여러 가지가 있더라 그래서 그걸 이용해봤다 C와 b는 아무것도 나오지 않았다 저기서 /etc/rc.d/found.txt라는게 관심이 간다 무엇인지 열어보자 level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524 진짜 shadow 파일이다 이걸 이용해 패스워드를 얻으라 비밀번호의 salt세글자 $1$를 보니 MD5인 것 같다 John-the-ripper 를 이용하자 VM에 ..
/bin/level7을 실행하면 패스워드를 요청하는데 힌트는 저렇게 주어져 있다 일단 실행해보자 무작정 패스워드를 입력하라 한다 일단 아무거나 넣자 읭? 에러가 뜬다 /bin/wrong.txt가 없다 한다 처음엔 이게 맞는줄 알았다 혹시나 해서 해커스쿨에 들어갔는데 다음과 같은 내용이 출력됐다 이게 뭘까 힌트를 다시보니 2진수를 10진수로 바꿀수 있는가? 이다 "_"를 0으로 "-"를 1로 변환해 보면 0110 1101 0110 0001 0111 0100 0110 0101 이 나온다 이것을 다시 10진수로 바꾸면 6 D 6 1 7 4 6 5 가 나온다 일단 답에 넣어보자 답이 틀리고 아까와 같은 2진수가 출력된다 뭘까? 그러다 문득 하나가 스쳐 지나간다 이것을 두 자씩 나눠서 보면? 6D 61 74 65..
힌트만으론 이번문제는 어떤것인지 감이 잡히지 않는다 엔터를 누르면 다음 화면이 나타난다 예전 90년도의 PC통신인 것 같다 1번 2번 3번을 누르면 연결이 되야 하는데 인터넷의 등장으로 사라진 것이라 추측된다 Ctrl + C로 빠져나와 tn이란 프로그램을 분석해보자 Cat hint, clear등 시스템 함수가 실행되고 이유는 모르지만 getchar함수가 실행된다 그리고 printf("\n #####################################\n"); printf(" ## ##\n"); printf(" ## 텔넷 접속 서비스 ##\n"); printf(" ## ##\n"); printf(" ## ##\n"); printf(" ## 1. 하이텔 2. 나우누리 ##\n"); printf(" ##..
이번 단계는 나는 솔직히 공략을 조금 봤다 공략을 보기 전까지 계속고민했다 결국 공략을 봤다 물론 공략 그대로 따라하진 않았다 보고 난 후에 내 방식대로 문제를 풀었다 먼저 힌트를 봤을 때 레이스컨디션이구나 라는게 단박에 떠올랐다 /usr/bin/level5는 소유자가 level6으로 되있어 디버깅이 안된다 그래서 level6으로 로그인 후 디버깅을 했다 0x0804842c : push ebp 스택 프레임 0x0804842d : mov ebp,esp 8바이트 만큼 할당 0x0804842f : sub esp,0x8 ------------------------------------------------------------------------------------------------------------..
[level4@ftz level4]$ cat hint 누군가 /etc/xinetd.d/에 백도어를 심어놓았다.! 일단 이 힌트만으론 어떤 문제일지 감이 안온다 /etc/xinetd.d 에 가보자 [level4@ftz level4]$ cd /etc/xinetd.d/ [level4@ftz xinetd.d]$ ls -l -r--r--r-- 1 root level4 171 9월 10 2011 backdoor 백도어라는 파일이 하나 나온다 파일을 확인해보니 Xinetd 설정파일이다 [level4@ftz xinetd.d]$ cat backdoor service finger { disable = no flags = REUSE socket_type = stream wait = no user = level5 server..
[level3@ftz level3]$ cat hint 다음 코드는 autodig의 소스이다. #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 ); } 이를 이용하여 level4의 권한을 얻어라. more hints. - 동시에 여러 명령어를 사용하려면? - ..
[level2@ftz level2]$ cat hint 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데... 이번에도 같은방법으로 level3의 setuid가 걸린 파일을 찾아보았다 [level2@ftz level2]$ find / -user level3 -perm +4000 2>/dev/null /usr/bin/editor 다음과 같은 파일이 나왔는데 실행시켜보자 [level2@ftz level2]$ /usr/bin/editor ~ VIM - Vi IMproved ~ ~ version 6.1.320 ~ by Bram Moolenaar et al. ~ Vim is open source and freely distributable ~ ~ Help poor children in Uganda! ~ typ..
[level1@ftz level1]$ cat hint level2 권한에 setuid가 걸린 파일을 찾는다. Level1의 문제는 소유자는 level2이며 setuid가 걸린 파일을 찾는것이다 리눅스 명령어인 find를 이용해 파일을 찾는다 [level1@ftz level1]$ find / -user level2 -perm +4000 2>/dev/null /(root)부터 검색해서 소유자가 level2이며 권한은 setuid가 걸린 파일을 찾는데 오류는 휴지통?(null)로 보낸다 /bin/ExecuteMe [level1@ftz level1]$ ls -l /bin/ExecuteMe -rwsr-x--- 1 level2 level1 12868 Sep 2 02:31 /bin/ExecuteMe 검색했더니 파일이..