CTF逆向中的字元與數字

2021-10-04 18:31:56 字數 2012 閱讀 8429

一.分類

兩大類,數字和字元。

數字有10進製和16進製制兩種表現形式,字元以ascii碼的形式儲存,兩者最終都會歸於一串2進製數,也可以說一串16進製制數。一串二進位制數儲存在那裡,不同的讀取方式會有不同的效果

二.兩類函式(四個函式)

1.10進製ascii碼與字元相互轉換

ord()

引數:單個字元

返回值:字元對應的ascii碼

f=

'z'flag0=

ord(f)

print

(flag0)

>>

>

122

#驗證ord()的引數是單個字元

f='zy'

flag0=

ord(f)

print

(flag0)

>>

>typeerror:

ord(

) expected a character, but string of length 2 found

chr()

引數:單個十進位制ascii碼,若不是ascii碼,或者不是10進製ascii碼都會報錯

返回值:ascii碼對應的十進位制字元

f=

122flag1=

chr(f)

print

(flag1)

2.10進製ascii碼與字元相互轉換

hex()

引數:乙個10進製數或乙個16進製制數

10進製數

返回值:乙個以0x開頭的16進製制形式的字串

f=

16flag=

hex(f)

print

(flag)

>>

>

'0x10'

16進製制數

返回值:以0x開頭的16進製制字串,樣式不變,但變成字串

f=

0x7e

flag=

hex(f)

print

(flag)

>>

>

'0x7e'

作用:10進製轉16進製制

p.s.不要前面0x的寫法

flag0=

hex(destr)[2

:]

bytes.fromhex()

引數:乙個不以0x開頭的16進製制字串

可顯ascii碼

返回值:ascii碼對應的字元

f=

'7a'

flag0=

bytes

.fromhex(f)

print

(flag0)

>>

> b'z'

不在ascii碼範圍和非可顯ascii碼

返回值:原樣式返回字串

#超出範圍

f='8e'

flag0=

bytes

.fromhex(f)

print

(flag0)

>>

>b'\x8e'

#非可顯字元

f='1f'

flag0=

bytes

.fromhex(f)

print

(flag0)

>>

>b'\x1f'

作用:16進製制數根據ascii碼轉換成byte型別字元(2個16進製製組乙個字元)

3.byte型別轉換成str型別

flag =

str(flag1,

'utf-8'

)

CTF中干擾逆向分析的幾種技術的介紹和解題思路

常見的干擾逆向分析的技術 花指令,反除錯,加殼,控制流混淆,雙程序保護,虛擬機器保護技術 這是一種比較簡單的技巧,在原始的 中插入一段無用的,能夠干擾反彙編引擎的 解題思路 花指令主要影響的是靜態分析,在ida中,可以手動將花指令patch為nop空指令 反除錯技術是指在程式執行過程中探測其是否處於...

數字與字元的操作

字元 串 轉換為數字 double atof const char string int atoi const char string int64 atoi64 const char string long atol const char string 將整形數字按指定的進製轉換成字元 串 char...

C 中數字與字串的轉換

1 字串數字之間的轉換 1 string char string str ok char p str.c str 2 char string char p ok string str p 3 char cstring char p ok cstring m str p 或者 cstring m st...