2016-09-10 97 views
1

我正在用python3編寫shellcode漏洞。但是,當我嘗試輸出一些十六進制字節。例如使用線 - python3 -c 'print("\x8c")' | xxd在python3中輸出十六進制值

價值在xxdc28c,而不是預期的8c

這個問題在python2不會發生。

回答

3

您的問題出現了,因爲Python 3將字符串處理爲Unicode,並且print預計Unicode會爲您的終端對某些輸出進行編碼。請嘗試以下方法繞過此:

python3 -c "import sys; sys.stdout.buffer.write(b'\x8c')" | xxd 
+0

這工作!所以才進一步瞭解,加'2c'的情況發生時,'打印()'會嘗試將unicode字符串轉換爲字節的形式? –

相關問題