CTF逆向中的字符与数字

一.分类

两大类,数字和字符。
数字有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=122
flag1=chr(f)
print(flag1)
2.10进制ascii码与字符相互转换

hex()
参数:一个10进制数或一个16进制数
10进制数
返回值:一个以0x开头的16进制形式的字符串

f=16
flag=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') 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CTF逆向CTF竞赛的一种题型之一,通过逆向工程方法来解决问题。入门CTF逆向需要了解的知识领域很广泛,比如二进制文件、硬件逆向、反汇编技术、加密算法、网络协议等等。下面是一个简单的脑图,介绍了CTF逆向入门所需要掌握的知识点: 首先是二进制文件的相关知识,包括ELF、PE等格式的文件结构和常见工具的使用。其次是反汇编和调试技术,了解汇编语言和调试器的使用方法,可以帮助我们在逆向分析更深入地了解程序逻辑。接下来是加密算法和转换方式的理解,比如Base64、SHA、AES、DES等加密方式的原理和常见攻击方式。此外,网络协议的了解也是非常重要的,包括TCP/IP协议、HTTP协议、UDP协议等,可以帮助我们理解网络数据的传输和安全隐患。最后,还需要了解一些常见的漏洞和技术,比如堆栈溢出、格式化字符串漏洞、ROP等,可以帮助我们攻击和利用目标程序。总的来说,CTF逆向入门需要多方面的知识储备和实践经验,在不断学习和实践过程提升自己的能力,才能更好地应对复杂的逆向挑战。 ### 回答2: ctf逆向(reverse)是赛事的一项重要技能,难度较高,需要掌握一定的专业知识。以下是初学者入门ctf逆向的脑图: 1.计算机组成原理:掌握计算机的各种硬件组件和内部结构,如处理器、内存、I/O设备等。 2.汇编语言:掌握常用汇编指令和机器指令,包括基本的数据类型、运算符、控制结构和子程序等。 3.操作系统:理解操作系统原理,掌握基本的程序调试和反汇编工具,如IDA Pro、OllyDbg等。 4.反编译:了解反编译工具和技术,学会使用OllyDbg进行程序的动态调试和逆向分析。 5.加密技术:了解常见的加密和解密算法,如MD5、SHA1、AES、RSA等。 6.漏洞利用:掌握常见的漏洞类型和利用技术,如缓冲区溢出、格式化字符串漏洞、堆溢出等。 7.网络安全:了解网络安全基础知识,包括TCP/IP协议、网络攻击和防御、网络数据包分析等。 8.实践和练习:参加ctf比赛,通过练习和实践逐步提高自己的逆向技能和解题能力。 通过以上脑图的学习,初学者可以逐步掌握ctf逆向技能,提高自己在竞赛的排名和成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值