hfctfwp(re)
1.easy python revering
看字节码操作,昂哥直接看直接写exp太强了,我就直接手动写了个源码出来(昂哥永远滴神)
arr0=[249,91,149,113,16,91,53,41,8]
arr1=[43,1,6,69,20,62,6,44,24,113,6,35,0,3,6,44,20,22,127,60]
arr2=[90,100,87,109,86,108,86,105,90,104,88,102]
def check0(flag):
for x in flag:
if ord(x)<32 and ord(x)>=128:
return True
return False
def check1(flag):
if len(flag)<100==False:
return False
if ((len(flag)*len(flag))%777)^233==513:
return True
else:
return False
def check2(flag):
if (((((ord(flag[0])*128)+(ord(flag[1])))*128+(ord(flag[2])))*128+(ord(flag[3])))*128+ord(flag[4]))*128+ord(flag[5])!=3533889469877:
return False
else:
if ord(flag[-1])+1!=125:
return False
return True
w=lambda x,y:x^y #前一个和后一个异或
def check3(flag):
arr=map(ord,flag)
a=arr[6:30:3]
for i in range(len(a)):
if((a[i]*17684+372511)%257)!=arr0[i]:
return False
b=arr[-2:33:-1]*5
c=map(w,zip(b,arr[7:27]))
if c!=arr1:
return False
p=0
for i in range(28,34):
if ((arr[i]+107)/16+77)!=arr2[p] and ((arr[i]+117)%16+99)!=arr2[p]:
return False
else:
return True
根据第一个check1,知道flag长度39
第二个check2,前五个其实盲是flag{这五个字符,代入验证也是对的
同时最后一个字符也就出来了,}是这个。
第三个check3()里面之前是验证出ASCII码值大于32小于128,直接爆破,先将6,30,3的爆破出来,之后再继续往下看发现是38倒序过来,的才能求,所以要先求出38,33的值,之后求完后,列表乘以5,是一模一样复制5个,说明是周期性,就用求余,再异或回去,再将剩余的也爆破一下。搞定。
总结一下,不要盲目的用z3来求,直接爆破,简单快捷,然后就是py的一些性质,这次也见到了之前很多没学过的东西,完全是边打边学,其他题太难了,顶不住。
hfctfwp(re)的更多相关文章
随机推荐
- 04丨MongoDB特色及优势
- 基于python内置方法进行代码混淆
0x00 动态加载模块 在python脚本中,直接使用import os.import subprocess或from os import system这种方法很容易被规则检测,即使使用其它执行命令的 ...
- SQL Server将同一列多条数据合并成一行
Sql server中,将同一字段多条数据用字符拼接为一个字符串方式. 原数据查询展示: 使用 STUFF 函数,将结果列拼接成一行.结果如下: STUFF: 1.作用 stuff(param1, s ...
- TVM优化GPU机器翻译
TVM优化GPU机器翻译 背景 神经机器翻译(NMT)是一种自动化的端到端方法,具有克服传统基于短语的翻译系统中的弱点的潜力.最近,阿里巴巴集团正在为全球电子商务部署NMT服务. 将Transform ...
- GraphX编程指南
GraphX编程指南 概述 入门 属性图 属性图示例 图算子 算子摘要列表 属性算子 结构化算子 Join算子 最近邻聚集 汇总消息(aggregateMessages) Map Reduce三元 ...
- 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet
对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...
- httprunner中的分层(api、testcase、testsuite)及实际使用
一.分层思想 api定义层:最底下的一层是api的定义层testcase层:测试用例层,调用定义层的内容testsuite:测试套件层 二.分层案例设计实现实践举例 1.api 层: 2.testca ...
- python_request 接口测试线性框架,模块化思想,增加日志打印
一.大框架 如下为一个简单的线性框架,同时编写common_api 模块,把一个个接口进行封装,案例编写时候只需要直接调用输入参数即可. 二. test_cases 模块具体写法 2.1 commo ...
- MySQL慢查询日志如何开启以及分析
1.MySQL慢查询日志是什么 (1)MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中查询时间超过(大于)设置阈值(long_query_time)的语句,记录到慢查询日志 ...
- 【C++】随机数,rand()与srand()函数
rand()函数 rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为2147483647. 测试代码: #include<cstdl ...