starts一直不会用z3,但是爆破里面经常会需要z3来一把梭,主要是在类型转换时里面经常有个a开头的类型搞我,给我整寄了。直到现在从normal题再一次做起又碰到z3的时候想起来还是需要学习一下,这次找到了一篇比较详细的讲解。
Z3约束求解器安装z3模块
1pip install z3-solver
在使用z3时,开头需要这样一行
1from z3 import *
设置变量一般来使用z3大多数都会有位运算,所以一般就不用管Real(实数)和Int(整数),直接把变量设置成向量型就可以。
1234# 声明单个 16 位的变量x = BitVec('x',16)# 声明 ...
starts在做normal5的时候有遇到很多不会的地方,比如为什么要对数据按位与(0xff),补0扩展和符号位扩展有什么用,这些操作和数据的关联。其实类似于这个0xff在level7的时候已经遇到过一次,当时只知道是为了防止数据溢出,当我在对normal5最后flag的数据操作时发现ff的个数会影响最后得到的数据,且对数据的操作顺序改变会导致flag得到不是想要的数据。于是打算好好看一下这个问题。
&&上一个0xff的起因大概是用一个dword和byte进行了比较,提取数据的时候数据是这样的:
10xFFFFFFC4, 0x00000034, 0x00000022, 0xFF ...
starts在写normal3和4的时候感受到自己看题太不仔细了,normal3在最后调试答案的时候加了头和尾,一直显示flag错误,想了一想才知道这个是因为没有看清最后题目的输出。还是要把每道题都理解透彻自己反复思考去看怎么做,哪里自己没有注意到,好好去归纳总结一下。
递归在normal3的时候遇到了递归算法,其实一开始想的是一个replace,感觉像是给flag的值用一个str的下标来替换,调试的时候一直在很混乱的循环,也没有想到递归这层,还是平常的基础知识运用的不够熟悉,遇到这些常见的算法都反应不过来。其实按照题目的意思是一个递归的排序。
递归算法简单来说就是一种调用自身函数的算法,递归 ...
starts《逆向工程核心原理》这本书是在todo list里最开头的,除了动手实践补充书上的知识也很重要,加班加点稍微写点笔记,让自己能看到些自己做了学了的东西吧。
重要的在开头书里写的是关于逆向工程。很重要的章节,告诉我要学什么,“嗯,先学这些概念吧,其他慢慢学”,不贪心,不急躁,希望自己也能体会到其中的乐趣,对生活和学习都热情以待吧。
前几章节主要讲了基本的调试程序和寄存器,但这些都是非常重要的部分,而我却一直记不住,写一些笔记来加深一下自己的印象。
习惯首先讲了调试一个简单的hello world的程序,但在调试中需要养成良好的习惯,使调试更加方便且看起来清楚。
1.学会添加注释和标签 ...
starts最近在开始做normal系列的题目,前面了解过一些以后大体还是能够理解题目的意思,但在写脚本上面出现了很多困难,(代码力很重要),不会写脚本然后看了wp,结果wp是py2写的,会报错,语法也有一些不太一样的,让本就py很寄的我雪上加霜。。
上面的都是废话,主要写一写python字节流和字符串还有aes十分简便的带类型的解密。
字节流与字符串在写脚本的时候遇到了hexstring与bytes的转换问题,于是根据指点去查了一下字节流与字符串的使用和区别。以下是资料:
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进 ...
start在写模拟登录的时候需要用到python request模块,并且要抓包发包,只能说一无所知,甚至不知道url是什么。写一写给自己科普点网络常识,以方便听懂dalao们聊技术。
所需要准备的包中的内容url:意思是我们常称为的网址,例如:
1url = "https://baidu.com"
user-agent:指用户代理,可以通过查看抓包的内容来看自己的user-agent,例如:
1Mozilla/5.0 (Linux; Android 10; Pixel 2 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KH ...