J’utilise setbuf afin de redirect stdout vers le buffer de caractères Comme expliqué dans le code suivant: #define bufSize 100 int main() { char buf[bufSize]; setbuf(stdout, buf); printf(“123”); //123 is written to the buffer setbuf(stdout,NULL); //123 is written to the stdout(unwanted side effect) printf(“456”); //123456 appears in the stdout } Comment puis-je résoudre le problème? […]
J’ai le code suivant: int ircsocket_print(char *message, …) { char buffer[512]; int iError; va_list va; va_start(va, message); vsprintf(buffer, message, va); va_end(va); send(ircsocket_connection, buffer, strlen(buffer), 0); return 1; } Et je voulais savoir si ce code permettait d’amortir les débordements en fournissant des tableaux de caractères d’une taille> 512 à la liste des variables? Et si […]
Je suis un programmeur débutant, mais d’habitude je peux résoudre mes propres problèmes. Cette fois, j’ai résolu le problème, mais ça me stoppe toujours. Un ami m’a suggéré de demander conseil à cette communauté. J’essaie d’imprimer des nombres en C. J’ai une fonction pour le faire en utilisant sprintf. Les nombres ne doivent jamais dépasser […]
Il est probable que ce type de scénario ne soit pas possible car je n’ai pas trouvé ce comportement documenté nulle part, mais j’étais curieux de savoir si quelqu’un avait des astuces pour accomplir quelque chose comme ça. Est-il possible de déterminer le contenu de la mémoire tampon stdin pour un programme avant que l’utilisateur […]
J’essaie d’apprendre à exploiter une technique simple de stream bufferover sous Backtrack Linux. Voici mon programme C #include #include int main(int argc, char **argv) { char buffer[500]; if(argc==2) { strcpy(buffer, argv[1]); //vulnerable function } return 0; } C’est le shellcode que j’utilise, qui correspond à simple /bin/ls \ x31 \ xc0 \ x83 \ xec […]
J’ai un tampon de croissance générique indendu pour accumuler des morceaux de chaîne “aléatoires” et ensuite récupérer le résultat Le code pour gérer ce tampon est écrit en clair C. API pseudocode: void write(buffer_t * buf, const unsigned char * bytes, size_t len);/* appends */ const unsigned char * buffer(buffer_t * buf);/* returns accumulated data […]
Nous soaps que stdin est, par défaut, une entrée en mémoire tampon; la preuve en est l’utilisation de l’un des mécanismes qui “laissent des données” sur stdin , tels que scanf() : int main() { char c[10] = {‘\0’}; scanf(“%9s”, c); printf(“%s, and left is: %d\n”, c, getchar()); return 0; } ./a.out Bonjour bonjour, et […]
J’écris un jeu de serpent en C en utilisant la bibliothèque ncurses , où l’écran se met à jour toutes les secondes. Comme le savent ceux qui ont joué au jeu, si l’utilisateur entre plusieurs touches ou maintient une touche enfoncée longtemps, il ne doit y avoir aucune pression sur une touche ‘mise en mémoire […]
J’essaie d’apprendre le multithreading et j’ai une question simple. Sur la plupart des exemples que je trouve, le tampon de sortie standard est désactivé avant de permettre à plusieurs threads de l’utiliser avec: setbuf (stdout, NULL); Pourquoi? Les codes sont identiques si je supprime cette ligne!
Habituellement, nous voyons tous le format de base de dépassement de tampon, qui comprend: – NOPs + shellcode + return_address Pourquoi n’utilisons-nous pas NOPs + return_address + shellcode? où fait-on l’adresse de retour point au début du shellcode? Je suppose que c’est parce que nous essayons peut-être d’écrire des données en dehors du segment de […]