In base a ciò che hai dato finora, sembra che tu stia tentando di sfruttare un overflow del buffer.
I managed to get to the point that I inject a shellcode like open a calculator or msgbox
Ora assumerò che il calc o msgbox sia solo un payload che hai usato nella variabile shellcode. Con questi, posso pensare a un paio di motivi per cui non riesci a far funzionare il bind shell.
- La shell di bind funziona, ma il firewall ti impedisce di connetterti. La sua porta 4444 come hai menzionato, quindi è possibile. Usa
netstat
sulla macchina vittima e verifica se la porta è in ascolto o meno. Altrimenti, c'è davvero qualcosa di sbagliato nel payload.
- Ci sono caratteri non validi nel payload della shell di bind. Effettua un'analisi errata dei caratteri, codificali e filtrali e riprova.
- Stai utilizzando un carico utile non valido. Questo si applica se il tuo sistema è a 32 bit.
- Esiste una restrizione per le dimensioni della dimensione del payload e l'hai superata.
- Il payload procede in modo autonomo. Prova a mettere NOP nei primi 4-8 byte del tuo payload (anche se questo è improbabile se non hai codificato il tuo payload).
Questi sono solo i motivi comuni a cui riesco a pensare perché la shell di bind non funziona. Spero che questo aiuti.