Pwn入門筆記(三)函式細節

2021-10-10 20:19:03 字數 1035 閱讀 5032

關於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函式 填寫...