文章分类 - pythonz3
摘要:5.elf教会了我需要注意数据的类型与数据的长度,不然也容易犯错误 关键在于看懂那几个强制类型转化,和运算符的顺序 其main函数为 int __cdecl main(int argc, const char **argv, const char **envp) { char s[64]; // [
阅读全文
摘要:装好了ubuntu 它的glibc版本够用 通过动态调试找到了其存储数据的正确顺序 先依次输入数组中存起来备用 if ( v3 == v9 ) { for ( i = 0; i <= 16; ++i ) { if ( (unsigned __int8)s[i] > 0x60u && (unsigne
阅读全文
摘要:尝试对3.elf进行动态调试 寄,我的glibc库版本低了 但根据2.elf的经验,其存储顺序应该是按上到下的顺序存储的,从低位到高位存储的 同时这个每两位就代表了一个字符刚好就有42个字符符合校验的字符个数 所以z3破解代码为 from z3 import * DataCmp=[ 0x66,0x4
阅读全文
摘要:通过进行动态调试发现确实 此处是进行校验的字符串 但是开始我所理解的顺序不是从左到右而是从低位到高位如图 0x04,0x46,0x81,0x63......正是v4从低位到高位的顺序排列的,我又犯了些低级错误。。。。。 所以此处通过z3 from z3 import * a=[0x4,0x46,0x
阅读全文
摘要:可通过如下代码 "前面需要输入条件" f=Solver() print(f.model) 可以查找自己所输入的条件 通过对z3的检验发现自己出现了个python的低级常识性错误 for循环时range输出的可遍历对象实际是小于该对象的 如range(10)其应该是<10 所以经过对遍历对象的修改 真
阅读全文
摘要:根据下列的校验过程,应该需要长度为42的字符串, for ( i = 0; i <= 41; ++i ) { if ( *((_BYTE *)v6 + i) != v4[i] ) { printf("wrong2 wrong2"); return 0; } } printf("woc,you got
阅读全文
摘要:尝试通过z3暴力破解1.elf 具体代码如下 from z3 import * f = Solver() DataCmp=[ 161, 186, 110, 70, 128, 244, 217, 170, 180, 54, 90, 204, 140, 30, 149, 33, 143, 67, 225
阅读全文
摘要:基本变量类型 其分为整型(Int),实型(Real)和向量(BitVec) 整形(int) 不是c中具有上下限的整形而是数学意义上的整数 创建方式 Int(name, ctx=None),创建一个整数变量,name是名字 Ints (names, ctx=None),创建多个整数变量,names是空
阅读全文