關於p64(),u64(),int等轉換函式
題目中write(引數1,引數2,引數3),write有三個引數,引數1是模式,「1」為寫模式,引數2在棧上其實是乙個位址,它會將這個位址上存的字串給列印出來,引數3是列印字串的長度。
直接進行輸出,
「%p」,可以輸出後面引數的位址上的值**(格式為0x…)**
「%20 $p」(無空格),列印出偏移為21得地方的位址的值
「%20 $n」(無空格),寫入%前字串的長度到偏移為21得地方
"%70d%20 $n"向偏移為21地方的位址寫入整數70
「%x」打出位址上的值,格式是16進製制,但省去了0x,型別為str
最近做題發現有幾個型別轉換函式,有些容易弄混,所以在這裡記錄一下自己的除錯結果。
p打包函式是將整數打包為相對應位數的位址表示方式,比如
可以看到,其實解析結果是一樣的,只不過對應的解析物件不同,
int(「引數」,16),引數是樣子為16進製制格式(如0x4ab010或去掉0x)的字串
而u64(引數),引數是位址的機器碼(如/x /x)
如攻防世界的level3,他使用了write函式洩漏了got表上函式的真實位址並列印了出來,此時列印出來的是\x \x機器碼,所以需要接收後用u()函式解包。
而在string中,secret後輸出的是16進製制格式的字串,所以接收後用int轉換,傳送時用的str。
**如果位址是16進製制格式的整型,則位址需要p()函式打包為機器碼字串。而為十進位制整型且為乙個位址,則用str()函式轉換為字串。若為乙個整數資料,則用p。
python入門筆記 三
抽象 判斷函式是否可呼叫 callable x python2 hasattr func.call python3 文件字串 def square x 這是.return x x print square.doc help square n a b c def change n n 0 v prin...
Flutter 入門筆記 三
例項 import package flutter material.dart void main class extends statelesswidget color colors.redaccent,child newtext red button expanded 靈活布局 child ne...
python入門筆記 函式
python入門筆記 函式 def function 定義乙個名為function的函式 定義函式時用下面來解釋該函式的用處 這個函式是用來重複輸出4次 你好 的 return for i in range 1 5 print 你好 pass pass function 呼叫fuction函式 填寫...