1.왜 <do_system+1124>로 ret을 바꾸면 쉘이 따지는가?
먼저 그부분의 어셈블리를 한번 살펴보자.
0x75077f <do_system+1119>: call 0x743d30 <sigprocmask>
0x750784 <do_system+1124>: mov ecx,DWORD PTR [ebx-316]
0x75078a <do_system+1130>: xor edx,edx
0x75078c <do_system+1132>: xor eax,eax
0x75078e <do_system+1134>: mov DWORD PTR [ebx+5820],edx
0x750794 <do_system+1140>: lea edx,[ebx-47601]
0x75079a <do_system+1146>: mov edi,DWORD PTR [ecx]
0x75079c <do_system+1148>: mov DWORD PTR [ebx+5816],eax
0x7507a2 <do_system+1154>: mov DWORD PTR [esp+4],esi
0x7507a6 <do_system+1158>: mov DWORD PTR [esp+8],edi
0x7507aa <do_system+1162>: mov DWORD PTR [esp],edx
0x7507ad <do_system+1165>: call 0x7a5490 <execve>
do_system+1124는 sigprocmask 함수를 call하고 난뒤의 바로 뒤따라오는 어셈명령어 부분이다.
이부분은 execve의 인자를 구성하는 단계로 call하기 바로 직전 인자의 상태를 확인해보면 다음과 같다.
execve("/bin/sh",{"/home/dark_eyes/hell_fire",NULL},envp)
이 구문을 해석해보자면, sh쉘을 hell_fire라는 이름으로 실행시키는 것이다.
그러므로 당연히 쉘이 따진다.
'wargame > LOB FC' 카테고리의 다른 글
LOB FC3 [dark_eyes -> hell_fire] (0) | 2014.04.24 |
---|---|
LOB FC3 [iron_golem -> dark_eyes] (0) | 2014.04.24 |
LOB FC3 [gate -> iron_golem] 를 풀다가 생긴 의문점에 대한 분석 (4) | 2014.04.23 |
LOB FC3 [gate -> iron_golem] (0) | 2014.04.22 |