일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kioptrix
- smb
- SQL Injection
- sql
- Samba
- 모의해킹
- CTF
- 내부침투
- load of sqlinjection
- web hacking
- Metasploit
- 취약점 스캔
- 해킹
- 메타스플로잇
- SQLINJECTION
- 암호해독
- root권한
- Los
- 시스템 해킹
- 해킹툴
- 침투테스트
- 스캐닝
- 취약점분석
- 권한상승
- 해킹도구
- 스캔
- 취약점
- 포트스캔
- Hacking
- 칼리리눅스
- Today
- Total
목록my_study/LOB (8)
감자 텃밭
해당 계정 또한 ls -l로 파일 및 디렉터리를 확인 후. c파일을 열어 소스코드를 확인함. 해당 소스코드를 보면 나머지는 이전과 전부 동일하지만 인자 값이 하나만 입력받도록 되어있다. 또한 argv [0] 값도 버퍼가 초기화되듯 초기화된다. 흠... 그럼 여기서 쓸 수 있는 방법은 argv [0]을 사용하는 것이다. 이번 문제도 ln -s 심볼릭 링크를 사용하면 풀 수 있을 거 같다. 이번에도 rename은 권한 문제로 되지 않는다. 이번엔 argv [0]의 주소를 알아내야 한다. 작업을 위해 tmp 디렉터리 생성 후 tmp디렉터리에서 작업을 해보자 이번에도 마찬가지로 core dump를 사용할 것이다. 앗 여기서 실수를 했다.. 여기서 argv [1]의 값이 사라지므로 argc [0] 즉 파일 이름을..
역시나 그랬들 실행파일과 c파일이있어 c파일을 확인하여 소스코드를 확인 해당 소스코드는 이전과 똑같지만 새롭게 추가된 내용으로는 argv[0]의 길이가 77이여야한다는것이다 argv[0]이 뭔지 몰라서 검색했더니 명령어 실행시 실행명령어 즉 ./argc가 해당된다 여기서 ./도 길이2로 취급한다 그럼 ./을 제외하고 파일의길이가 75가 되어야한다. 해당 문제를 풀기위해서는 많은 방법들이 존재한다 rename을 쓴다던가 .////이런식으로 /을 추가한다던가 있지만 권한문제가 생겨서 나는 A*75를해서 심볼릭 링크를 걸어 해결했다. 심볼릭 링크를 걸어 링크파일을 생성하였다 이제 payload를 작성하기위해 이전과 같은작업 argv[2]의 주소를 알아야하기에 파일을 실행 -> core dump를 이용하였다. ..
해당 계정으로 접속 후 동일하게 실행 프로그램과 c언어 소스 코드 파일이 있다 c언어 소스코드를 확인해보자. 해당 코드 내용으로는 이전과 같이 하나 이상의 인자를 받아야하며, 환경변수는 사용불가, 버퍼 48번째 자릿수에는 \xbf가 있어야고, 버퍼 헌터가 있어 버퍼의 값이 초기화된다. 여기서 새롭게 추가된 것은 첫 번째 인자 값의 크기가 48 이상이면 프로그램이 종료가 된다,... 훔 그럼 이문제에서는 argv [2]즉 두 번째 인자 값을 쓰면 될 거 같다. 추측한 payload로는 buf [40]+rsp [4]+esp [4 [argv2 주소]] payload2= argv [2] 주소에 nop sled+쉘 코드를 삽입하면 될 거 같다. 작업을 위해 tmp로이 동해 보자 일단 argv [2]의 주소를 얻기..
해당 계정으로 접속 후 ls -l로 파일 및 디렉터리를 확인 후 wolfman.c파일을 확인하여 소스코드를 확인 음.. 이전문제와 동일하게 인자 값은 하나 이상 48번째에 \xbf가 있어야 하며 strcpy를 사용한다 하지만 이문제에서는 buffer hunter 즉 memset를 사용하여 버퍼의 값을 초기화한다. 즉 버퍼에 쉘 코드를 삽입하여도 초기화가 된다는 것이다... 흠 그렇다면 버퍼에 값이 사라져도 argv [1]의 값은 존재하니 argv[1]의 값을 쓰거나 ret뒤에 값을 써도 된다. 나는 ret뒤쪽에 있는 값을 쓰기로 했다. 즉 buffer [40]+sfp [4]+set [4]+[shell code]로 payload를 작성하면 된다. 각종 권한 문제로 인해 /tmp에서 작업을 했다. ret 뒤..
접속 후 ls -l로 디렉터리 및 파일을 확인한 후 orc.c 파일을 열어 소스코드를 확인함 음... 뭔가 좀 복잡하지만 해석을 해보면 40바이트의 버퍼와 i 가 있고 인자 값으로 하나 이상의 값을 넣어야 한다. 또한 환경변수를 사용하지 못하도록 되어있고 입력값의 인덱스[47]번(48byte)부분 의 값이 \xbf여야 한다. 흠.. 복잡해 보이지만 생각해보면 strcpy를 이용해 버퍼오버플로우를 일으켜 버퍼에 쉘코드를 삽입 후 sfp까지 더미로 채우고 ret부분에 버퍼의 시작 주소를 넣으면 된다!!라고 추측하였다. 그럼 일단 버퍼의 시작 주소를 구해야하는데 이번엔 core dump를 이용하였다. core dump를 사용해서 확인해본 결과 우리가 입력한 값이 버퍼의 시작 주소로 잘 들어간 것을 확인하였고 ..
cobolt로 접속 후 ls-l을 확인 후 goblic 실행파일과 goblic.c파일을 확인하였다 그 후. c파일을 열어 프로그램을 소스코드를 확인하였다 해당 소스코드는 16바이트의 버퍼가있고 gets함수를 이용하여 입력값을 검증하지 않고 계속해서 입력받으며 printf를 사용하여 화면에 출력하는 프로그램이다. buffer가 16바이트이므로 쉘 코드는 들어가지 않을 거 같다. 그럼 이전 문제와 동일하게 환경변수를 이용해서 풀어나갈 수 있을 거 같다. 일단 진행을 위해 tmp디렉토리로 프로그램을 이동 후 작업을 해나갔다. 해당 파일을 gdb로 확인하였을 때 dummy값은 없는 거 같다. 그럼 바로 환경변수를 만들어보았다 환경변수의 주소값을 얻기 위해 프로그램을 작성하였다. (저기 /n이 아니라 \n이이다!..
이전 gate문제와 동일하게 일단 접속후 ls -l 명령어를 통해 해당 경로에 디렉토리 및 파일을 확인하였다. 역시 같은 내용이다. cobolt 파일과 .c 파일이 존재하였다. 일단 .c파일을 확인하여 해당 실행파일의 소스코드를 확인하였다. 해당 소스코드의 내용은 버퍼에 16바이트를 할당하고 인자값이1개이상이여야하며, 나머지는 이전과 같이 buffer에 인자값을 복사(전달)하고 buffer문자열을 출력한다. gate문제와 비슷하지만 buffer의 크기가 16바이트이므로 쉘코드를 삽입할 수 없다. 해당 버퍼에 크기가 작다면 환경변수를 만들어 환경 변수에 쉘코드를 삽입하면 된다!! 일단 이전과 같이 문제진행을 위해 tmp디렉토리로 이동후 작업을 하였다. my_s라는 환경변수를 설정하고 그 안에 25바이트의 ..
처음 gate로 로그인하여 ls -l을 통해 해당 경로에 존재하는 디렉터리 및 파일을 확인 해당 소스코드의 내용은 1개 이상의 인자를 받아야하며, 그렇지 않을 경우 "argv error"을 출력하고 프로그램이 종료되고, 1개이상의 받았을 경우 해당 인자를 buffer변수로 옮긴 후 해당 문자열을 출력하는 코드라는 것을 알 수 있었다. - 해당 코드의 취약점?이라고 하면 strcpy함수이다 이 함수는 입력값 검증 없이 해당 인자 값을 버퍼에 옮기기 때문이다. 코드 분석을 위해 gdb를 실행하려 하였지만 권한 문제가 발생하여 임시파일을 생성할 수 있는 디렉터리인 tmp파일에 복사하였음 그 후 gdb를 통해 분석을 시도!!! esp를 0x100 (10진수로 변환했을 때 256)256) 크기만큼 늘린 후 인자 ..