pwn中str()與p64()


在做一道題是,當scanf的字符串是'%d'時,用str(0xfc1)會輸入修改成功。

當scanf的字符串是'%s'時,用p64(0xfc1)會輸入修改成功。

想了很久,才明白。

用pwn腳本時,用str()發送數據是模擬交互輸入,比如str(0xfc1)會發送過去 4033 這個字符串,就相當於我們與程序交互時,輸入了4033這個數字,所以可以用"%d"來讀取,並用小端序存儲

用p64()發送數據時,是發送的字節流,也就是比特流(二進制流)。本來是01這樣表示的,但是ide為了方便觀察, 就轉換成了\xc1\x0f\x00\x00\x00\x00\x00\x00。發送時,也是按照字節來發,所以要用"%s"來讀取

注:我一直想為什么是按照字符串來讀取,並且\xc1\x0f是反的呢,我猜想的是因為字符串放入內存是\x0f先放入棧中,然后\xc1再放入,所以會這樣。

 

 

 

 

我試了試用‘%s’讀取4033,讀入內存的是   0x0000000033333034。  用'%d'讀取4033,讀入內存的是0xfc1.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM