페도라원정대 gate->iron_golem 에대해서 의문점이 가 질문드립니다.
여기서 fake ebp를 사용해 쉘을 획득하게 되는데
그 과정에서
int main()
{
setreuid(geteuid(),geteuid());
execl("/bin/sh","",0);
}
이런식으로 만들고, 이곳에 \x01를 심볼릭 링크를 거는데 그 이유가 무엇이고,
"A"*264][GOT address - 8][execl address + 3] 페이로드가 이렇게 되는데
execl address를 넣음에도 불과하고 위에 있는소스가 실행되는 까닭이 무엇인가요?
Hit : 4200 Date : 2013/11/30 04:42
kumi123
그냥, &execl AAAA &/bin/sh NULL 넣어주셔도 상관은 없습니다... 하지만, 위에 있는 값을 써도 상관은 없다는 것이죠.. 가장 큰 이유는 간단해서 입니다.. 위와 같이 만들어 줄려면 꽤 시간이 걸리는 작업이거든요..
그리고, fake ebp를 하면, ebp값이 바뀌게 되고, execl+3의 주소( push ebp 가 들어가면 안되므로) 를 넣어주면 바뀐 ebp+8에 요소가 execl 첫번째 요소 ~~~ 되면서 쉘이 따지게됩니다.. 이해가 안가면, 제 블로그 가서 구경하세요.. 자기소개에 있어요