일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 비동기배열처리방법
- typescript
- 운정 소바동
- 잠실새내 도그존
- useMutation error
- graphql react native
- 토라비
- 비동기배열
- 금별맥주
- graphql mutation error
- promise메서드
- 홍대 토라비
- 앙버터마카롱
- apolloclient
- 화이트 해커를 위한 웹 해킹의 기술
- graphql 400
- 홍대 예술
- 잠실새내
- 지보싶 신촌점
- apollo react native
- graphql with reactnative
- graphql
- 화이트해커를 위한 웹 해킹의 기술
- 신촌 소문난집
- promise처리
- 예쁜술집 예술
- 홍대 카페 장쌤
- 도그존
- 고르드
- graphql with RN
- Today
- Total
목록wargame 풀이 (61)
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
id: level11 pw: what!@#$? 이번에는 attackme 실행파일과 hint 파일이 존재한다. (attackme 파일에는 setuid가 설정되어있다.) hint를 읽어보았더니 attackme의 소스코드를 보여준 것 같다. //hint 내용 attackme 실행파일의 코드인 듯 #include #include int main( int argc, char *argv[] ) { char str[256];//str 문자열 setreuid( 3092, 3092 );//권한을 나타냄, level12 strcpy( str, argv[1] );//입력 값(argv[1])을 str에 복사 //strcpy에는 BOF 취약점이 있다. 입력받는 문자열 크기를 받지 않아 원하는 만큼 입력할 수 있다. printf..
id: level10 pw: interesting to hack! hint 읽기 공유 메모리에 접근해서 그 내용을 읽어야한다! 더보기 공유 메모리? : 여러 프로세스들이 함께 사용하는 메모리, 프로세스들이 메모리 자체를 공유하게 됨으로써 오버헤드가 발생하지 않아 속도가 빠르다. 여러 프로세스에서 동시에 접근할 수 있다. 즉, 두명의 사용자가 한 대화를 해당 공유메모리에 접근하면 볼 수 있다! 공유메모리 segment를 확인해보자. (ipcs) ipcs 명령어: 시스템에서 사용 중인 콜 프로세스의 ipc와 관련된 정보를 출력한다. -m 옵션을 이용하면 공유메모리 세그먼트를 확인할 수 있다. ipc: message queue(q), shared memory (m), semaphore (s)의 자원을 사용하는..
id: level8 pw: apple level9의 디렉토리를 조사해보자 hint가 있다! hint를 읽어보자 /usr/bin에 존재하는 bof의 소스코드가 힌트로 들어있다. 소스코드를 먼저 분석해보면 다음과 같다. //bof의 소스코드 #include #include #include main(){ char buf2[10];//크기가 10인 char 배열 buf2 선언 char buf[10];//크기가 10인 char 배열 buf 선언 printf("It can be overflow : ");//overflow를 이용해야함을 알려준다. fgets(buf,40,stdin);//buf에 40만큼 입력받고 있다. overflow 발생 지점 if ( strncmp(buf2, "go", 2) == 0 )//buf..
id: level8 pw: break the world 로그인 후 디렉토리 확인 hint를 읽어보자 일단 shadow파일이 존재하고 그 용량이 2700이라고 했으니 size가 2700byte인 파일을 찾아보자! 우리는 그 파일을 찾아 암호화된 패스워드를 복호화해서 패스워드를 알아내는 것이 최종 목표! (find / -size 2700c 2> dev/null) 2700뒤에 붙는 c는 byte 단위를 의미한다. c 외에도 b-512byte(블록) w-2byte k-kbyte 가 있다. 더보기 shadow 파일?? 리눅스 시스템은 암호화된 패스워드를 포함해서 사용자 계정 정보를 /etc/passwd 디렉토리에 보관한다. 그러나 /etc/passwd의 파일은 수정은 못하지만 누구나 볼 수 있다. shadow 패..
id: level7 pw: come together level7에 로그인, 디렉토리 확인 hint를 읽어보자! 음...일단 /bin으로 이동해서 level7을 실행해보자 패스워드 입력 창에 1234를 입력했더니 /bin 위치에 있는 wrong.txt 파일을 읽어오는 것을 실패한 것 같다. (이상해서 구글링 했더니 local로 들어오는 경우 가끔 이런 일이 있다고 한다. 그래서 root 권한으로 접속 후 구글링에 나온 wrong.txt 내용을 넣어주었다. ㅠㅠㅠ) root에서 wrong.txt를 넣어준 후 다시 level7에 로그인해서 level7 파일을 실행시켜보자! 이제 힌트가 나온 것 같다! 힌트 3번을 보면 2진수를 10진수로 바꿀 수 있느냐고 묻고 있다. 힌트 4번은 계산기를 공학용으로 바꾸어놓으..
id: level6 pw: what the hell level6에 로그인 해보자 이전과는 다르게 디렉토리 확인 전에 hint가 먼저 나왔다. 입력을 시도하자 바로 다음 화면으로 넘어갔다. 다짜고짜 접속하고 싶은 bbs를 선택하라고 한다. 일단 1을 입력해보았다. 로딩하는 듯한 창이 계속 유지되다가 갑자기 putty가 종료되었다?!?!?!?! (이게 무ㅓ람) 이번에는 2, 3번도 시도해보겠다. IP주소만 다르게 나오고 putty창이 강제로 종료되는 것은 같았다. 아마 level6에 접속하자마자 hint가 자동으로 나오고 텔넷 접속 서비스도 나오는걸 보니 level6 로그인과 동시에 어떤 프로그램이 실행되는 것 같다. 텔넷 접속 서비스 창에서 프로그램을 종료하기 위해 ctrl+c를 입력해보았다. (리눅스에서..
id: level5 pw: what is your name? level5에 로그인, ls -l 명령어 이용 hint 파일을 읽어보자 (cat hint) hint의 내용대로 /usr/bin으로 이동해서 level5를 실행시켜보고 /tmp로 이동해서 level5.tmp가 생성되었는지 확인해보자 level5 파일이 /usr/bin에 존재하는 것과 setuid가 걸려있는 것도 확인할 수 있다. 그러나 level5 파일을 실행시킨 후 /tmp로 이동했을 때 level5.tmp라는 파일은 생성되어있지 않았다. (지운 부분은 관련없어서 지웠음) 이건 무슨 의미일까?? ->level5를 실행시켰을 때 /tmp에 level5.tmp가 생성되지만 프로그램 종료와 함께 파일이 삭제된다. ->따라서 삭제되기 전에 파일을 가져..
id: level4 pw: suck my brain 로그인 후 ls -l 명령어를 이용해서 디렉토리 확인 역시 hint가 있고 이를 읽어보겠음 (cat hint) 누군가가 /etc/xinetd.d/ 위치에 백도어를 심어놓았다는 힌트가 들어있다. /etc/xinetd.d/에 존재하는 백도어는 네트워크를 이용한 서비스 포트와 관련된 포트 백도어! 포트백도어: 로컬 백도어와 달리 원격에서도 사용할 수 있는 장점이 있다. 백도어를 확인하기위해 저 이치로 이동하자 (cd /etc/xinetd.d/) 디렉토리 이동 후 ls 명령어를 실행시켰더니 backdoor 파일이 존재한다. 이를 읽어보자! (cat backdoor) 우리에게 필요한 코드를 분석해보자! user: 권한을 나타내며 level5의 권한을 가지고 있다..
id: level3 pw: can you fly? ls -l로 디렉토리 정보를 불러온다 hint 파일을 읽어보자 (cat hint) 이번 힌트에는 코드가 적혀있는 걸 볼 수 있다. more hints를 먼저 해석해보면 동시에 여러 명령어를 사용해야하고 문자열 형태로 명령어를 전달해야한다. 즉, 문자열 형태의 명령어들을 한번에 전달해야한다는 것을 알 수 있다! 이번에는 주어진 코드를 해석해보자 //autodig #include #include #include int main(int argc, char **argv){ char cmd[100];//cmd라는 char형 배열을 size 100으로 선언 if( argc!=2 ){//argc!=2일때 (main함수에 전달되는 인자 수가 2가 아닐때) printf(..
id: level2 pw: hacker or cracker level1과 마찬가지로 ls -l을 이용해서 디렉토리 정보를 가져온다. hint 파일이 존재한다! hint 파일을 읽어보자! (cat hint) 리눅스에서 텍스트 파일 편집은 vi (vi editor)이다. vi editor를 사용해서 쉘 명령을 실행시킬 방법을 찾아보자! 우리가 원하는건 level3의 pw이기 때문에 소유주가 level3인 파일을 find를 이용해 검색해보자! find / -user level3 2> /dev/null을 입력해준다. (검색의 편리함을 위해 오류가 나는 파일은 휴지통으로 버린다.) 검색 조건에 해당하는 파일 2가지가 출력되었다! 우리는 실행파일인 editor를 사용할 것이다. .swp : 스왑파일, vi나 vim..