首页 > 其他分享 >[SWPUCTF 2021 新生赛]简简单单的逻辑

[SWPUCTF 2021 新生赛]简简单单的逻辑

时间:2023-05-09 11:11:10浏览次数:42  
标签:十六进制 切割 SWPUCTF list 简简单单 异或 zfill 2021 result

得到一个.py文件,一般是没壳的,不过还是要养成习惯,查个壳:

意料之中,啥也没有,打开文件:

给了我们一个加密逻辑,然后最后一行给了一个结果:那么就是根据上述的逻辑,反解密出flag就好了

分析一下上述逻辑:

首先对list进行变化得到key的值(怎么变化不用理,因为用不到,为啥因为是异或昂,异或的特性就是异或后再异或一次就回来了)

其次,对拿flag来对key进行异或后,转为十六进制,再转为字符串的形式后,进行切割,切割后不足位数的在前边填上0补充(.zfill()),最后赋给result

怎么理解这个切割和填充呢呢,上个图:


这样就能直观的理解怎么切割,又怎么补位的

这里再细讲一下[2:],是指将该字符的前两个去除,保留后边的。而.zfill(2)是指,判断留下的字符是否有两个,如果不足两个则在前边添加0

如果:‘2’.zfill(2)则会变成 --> ‘02’;‘2’.zfill(3)则会变成 --> ‘002’

理解程序后,那么我们就可以开始逆推了,给了一个result = ‘bcfba4d0038d48bd4b00f82796d393dfec’

根据刚才的理解可以知道,这是由异或后,转为十六进制,切割补位后拿到的

也就是说,我们先要将他们分开(分为两两一组)

然后转化为十六进制

最后异或,并转化为char类型,就可以拿到答案了,脚本如下:

flag = 'xxxxxxxxxxxxxxxxxx'
list = [47, 138, 127, 57, 117, 188, 51, 143, 17, 84, 42, 135, 76, 105, 28, 169, 25]
result = 'bcfba4d0038d48bd4b00f82796d393dfec'
flag1 = ''
result1 = ''
for i in range(len(list)):
    key = (list[i] >> 4) + ((list[i] & 0xf) << 4)
    # result += str(hex(ord(flag[i]) ^ key))[2:].zfill(2)
    flag1 += chr((int(result[2 * i: 2 * i + 2], 16) ^ key))
print(flag1)

拿到NSSCTF

标签:十六进制,切割,SWPUCTF,list,简简单单,异或,zfill,2021,result
From: https://www.cnblogs.com/TFOREVERY/p/17384278.html

相关文章

  • 2021/5/8每日随笔
        今天,用下载了matlab软件,并用matlab编写了0.618直接法编写程序,完成了实验,下午上了不一样的软件工程,玩了两节课,我第一次理解了软件工程的课,这门课好像不是要教编程,而是要教会我们怎么编程注意什么,以后工作注意什么,是在我们进入社会前的新手指导,晚上一如往常的背单词,很迷......
  • 当前主机存在Sudo CVE-2021-3156漏洞:Sudo1.8.23升级1.9.5p2
    Sudo权限绕过漏洞(CVE-2019-14287)Sudo缓冲区溢出漏洞(CVE-2021-3156)根据安全漏洞CVE-2021-3156,受影响的Sudo版本:Sudo版本1.7.7到1.7.10p9、1.8.2到1.8.31p2和1.9.0到1.9.5p1受到影响。sudo官网:https://www.sudo.ws/sudo下载地址:https://www.sudo.ws/getting/do......
  • 2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛(正式赛)H-Cute Rabbit
    官方题解:https://blog.csdn.net/qq_62464995/article/details/127493921题目大意给出数组a[i],将a分成两个数组x和y,使得\(\forallx[i]\%y[j]\)都相等(\(|x|,|y|>0\))构造一组\(|y|\)最大的方案n<=1e5,1<=ai<=1e6题解神必结论题先假设a不是全部相等结论1:最小值一定只能全在x......
  • WPS2021 无法加载此加载项程序 解决办法
    我们多次安装WPS后容易导致WPS的默认加载项位置错误,打开word时提示如下错误1.此时可以通过如下步骤解决:开发工具——加载项——禁用——确定即可以正常使用 2.如果需要加载mathtype加载项,则通过加入正确的路径即可解决:添加——mathtype正确的路径——确定3.重新打开word......
  • 2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛(正式赛)A-Tree
    官方题解:https://blog.csdn.net/qq_62464995/article/details/127493921题目大意给出一棵边权为1的树,构造排列p,使得①p[1]=1②dis(p[i],p[i+1])<=k题解神必防ak题当k=1时,显然只能是从1开始的一条链当k>=3时,一定有解,考虑构造:把树上的点按层黑白黑白染色,dfs遍历整棵树,在第......
  • Java反射--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本
    >Java反射--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本前言序言再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点。适合阅读人群Java学习者和爱好者,有一定工作经验的技术人,准面试官等。阅读建议本教程是系列教程,包含Java基础,JVM,容器,......
  • 爬虫 202107【JavaPub版】
    写于2021071117:10北京朝阳区@[toc]方法:首先下载mitproxy,pip安装方法:>pipinstallmitmproxy基本使用方法:给本机设置代理ip127.0.0.1端口8001(为了让所有流量走mitmproxy)具体方法请百度。启动mitmproxy。windows:>mitmdump-p8001Linux:>mitmproxy-p80012.修改chromedriver......
  • 两极三相光伏逆变并网仿matlab2021a
    两极三相光伏逆变并网仿matlab2021a采用mppt算法,扰动观察法,采用spwm调制,控制环采用双环PI调节,逆变器采用三相桥式逆变器,坐标变换含PLL锁相环,逆变器输出端加设LCL滤波器。无需发货,联系发邮件。ID:7720681036198445......
  • 三电平NPC逆变器矢量控制(SVPWM)matlab2021a
    三电平NPC逆变器矢量控制(SVPWM)matlab2021a采用矢量控制,大扇区、小扇区、矢量作用时间等均用程序编写,可以得到马鞍波调制波形逆变器输出三电平相电压波形,五电平线电压波形,经过滤波器后,可以得到对称的三相电压,电流ID:7440684413273739......
  • 电压型三相桥式逆变并网仿真Matlab2021
    电压型三相桥式逆变并网仿真Matlab2021电路采用两电平拓扑,采用双环PI控制,变换部分加设PLL锁相环,采用SPWM调制,逆变器输出端加设LCL滤波器,并入电网。可以得到逆变器输出端为三电平的线电压波形,滤波后可以得到对称三相电压、电流波形。无需发货,联系即可发邮件。ID:2217680461425092......