CTF 공부/LOB

[LOB]succubus

JJWANIC 2020. 2. 7. 20:00

Return Address가 무조건 strcpy의 주소여야하네요.. 그리고 buffer+ 48부터 A로 4byte를 채웁니다...
근데 우리가 사용하는 함수가 strcpy, 복사를 해주는 함수입니다.
payload는 대충 이렇게 작성하면 될 것 같습니다.

./nightmare + "\x90"*44 + &strcpy + dummy[4] + (strcpy 첫번째 인자) + (strcpy 두번째 인자) + (strcpy 세번째 인자)

여기서 strcpy의 첫번째 인자는 strcpy가 호출 후 돌아갈 Return Address, 여기서는 dummy[4]가 들어있는 주소를 넣어주고 strcpy의 두번째 인자는 Shellcode가 존재하는 곳의 주소를 넣어주면 됩니다. 마지막으로 strcpy의 세번째 인자는 Shellcode가 담겨있는 주소를 넣으면 됩니다. 저는 Shellcode를 환경변수에 넣어서 사용해보겠습니다.

먼저 각각의 주소를 알아야합니다.

0x41414141 이 strcpy가 호출되고 돌아갈 Return Address입니다.
그리고 0x44444444 (DDDD)가 들어있는 주소가 Shellcode가 담긴 환경변수 주소를 넣을 주소입니다.

Shellcode가 들어간 환경변수 주소는 위와 같습니다. 그럼 바로 해보죠!

성공했습니다.!