|
|


22019, 1/1101 |
![]() |
![]() |
![]() |
![]() |
|
sllwoo | ||||||
|
http://fjklsdk@fjklsdjflk;a | ||||||
|
segmentation_fault.png (70.0 KB), Download : 99 [오른쪽 버튼 눌러 다운 받기] | ||||||
|
ftz level11에서 sementation fault오류뜨네요... | ||||||
|
http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Board&no=33122 [복사] ![]()
Hit : 11987 Date : 2015/01/23 11:54
|
|||||||
| ![]() |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| skyclad1975 | 보통 4바이트 단위로 메모리가 할당될텐데 243바이트라니 조금 이상하네요. 확인해보고 답변드리겠습니다. |
2015/01/24 | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| skyclad1975 | GDB로 열어서 확인해본 결과 0x08048473 <main+3>: sub esp,0x108 이런 부분과 0x08048499 <main+41>: lea eax,[ebp-264] 0x0804849f <main+47>: push eax 0x080484a0 <main+48>: call 0x804835c <strcpy> 이런 부분이 있었습니다. 스택에서 총 0x108, 즉 264바이트만큼을 할당하였으며, str 문자열의 시작주소는 ebp-264라고 볼수 있겠습니다. 애초에 str 문자열이 256바이트짜리이니, 최소한 256바이트 이상, Dummy 값이나 SFP까지 포함해서 264바이트정도는 넣어야 하지 않나 싶네요. 실제로 ./attackme `python -c 'print "a"*263'` 이렇게 실행했을 때에는 정상적으로 동작하였습니다. 아직 리턴 어드레스를 침범하지 않았다는 뜻이죠. 그리고 기본적으로 문자열은 문자열의 끝을 나타내기 위해 끝에 자동적으로 '\0' 으로 널 문자가 붙는다는것도 생각하고 시도하셔야 합니다. |
2015/01/24 | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| skyclad1975 | ./attackme `python -c 'print "a"*267'` 여기까지 되고, ./attackme `python -c 'print "a"*268'` 여기부터 안 되는걸 보니 여기부터가 리턴 어드레스인 모양이네요. 쉘코드가 24바이트+4바이트짜리 같은데 앞의 24바이트를 243바이트에 더하면 267바이트가 됩니다. 뒤의 4바이트를 주소로써 리턴 어드레스에 덮어씌워야 한다면 243바이트가 아니라 244바이트를 넣어야 하는게 아닐지요. |
2015/01/24 | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||