1
我正在用python3編寫shellcode漏洞。但是,當我嘗試輸出一些十六進制字節。例如使用線 - python3 -c 'print("\x8c")' | xxd
在python3中輸出十六進制值
價值在xxd
是c28c
,而不是預期的8c
這個問題在python2不會發生。
我正在用python3編寫shellcode漏洞。但是,當我嘗試輸出一些十六進制字節。例如使用線 - python3 -c 'print("\x8c")' | xxd
在python3中輸出十六進制值
價值在xxd
是c28c
,而不是預期的8c
這個問題在python2不會發生。
您的問題出現了,因爲Python 3將字符串處理爲Unicode,並且print
預計Unicode會爲您的終端對某些輸出進行編碼。請嘗試以下方法繞過此:
python3 -c "import sys; sys.stdout.buffer.write(b'\x8c')" | xxd
這工作!所以才進一步瞭解,加'2c'的情況發生時,'打印()'會嘗試將unicode字符串轉換爲字節的形式? –