Jestem w klasie bezpieczeństwa oprogramowania i obecnie uczymy się o przepełnieniach bufora i sposobie ich wykorzystania. Mam program, który wiem, jak wykorzystać, ale wydaje mi się, że nie jestem w stanie tego zrobić, ponieważ muszę napisać heks, że nie pozwala mi pisać.Napisz hex w GDB
muszę napisać dane wygenerowane z:
perl -e 'print "A"x48; print "\x1b\x88\x04\x08";'
Jednak nie mogę przekierować to wyjście do argumentów wiersza poleceń, ponieważ program działa interaktywnie. Historycznie, użyłem xclip do skopiowania go do schowka, a następnie wkleje do działającej aplikacji, ale z jakiegoś powodu ta sekwencja szesnastkowa nie pozwala mi użyć xclip do skopiowania (pokazuje, że nic nie zostało skopiowane).
Na przykład:
perl -e 'print "A"x48; print "\x1b\x88\x04\x08";' | xclip -sel clip
Gdybym Ctrl + V po tym, nic nie zostanie wklejony. Jeśli po prostu skopiuję i wkleję dane wyjściowe z okna terminala, niewłaściwy hex zostanie wklejony (zakładam, że jest tak ponieważ hex nie jest widoczny ASCII).
Moje pytanie brzmi: czy GDB może w jakiś sposób wstawić wygenerowany tekst do interaktywnego, działającego programu?
Jestem świadomy, że jeśli program wykorzystywaną wziął argumenty wiersza poleceń, co mogłem zrobić:
run $(perl -e 'print "A"x48; print "\x1b\x88\x04\x08";')
Ale ponieważ nie można uruchomić poprzez argumenty CLI, to nie nadaje się do użytku.
Każda pomoc będzie świetna!
można przekierować standardowe wejście do odczytu z pliku lub potoku. –
Jak mogę to zrobić I uruchomić GDB z punktami przerw w tym samym czasie? Wiem, że mogę zrobić "perl -e ... | ./program", ale to nie uruchamia gdb z punktami przerwania. "perl -e ... | gdb ./program" uruchamia gdb, ale nie uruchamia programu ani nie używa punktów przerwania. – Chris
Możesz wprowadzić te z klawiatury ... http://superuser.com/questions/59418/how-to-type-special-characters-in-linux –