当前位置: 首页 > wzjs >正文

福州电商网站建设进出成都最新通知

福州电商网站建设,进出成都最新通知,网站的统计代码,猪八戒设计网站官网[Reverse1] Tales of the Arrow 来源:TQLCTF高校赛 类型:Reverse 当咸鱼太久,突然要打CTF,啥都不会,边刷题边学吧。先来点偏算法的逆向题。 文章目录[Reverse1] Tales of the Arrow题目描述读懂源python代码突破口题目…

[Reverse1] Tales of the Arrow

来源:TQLCTF高校赛
类型:Reverse

当咸鱼太久,突然要打CTF,啥都不会,边刷题边学吧。先来点偏算法的逆向题。

文章目录

  • [Reverse1] Tales of the Arrow
    • 题目描述
    • 读懂源python代码
    • 突破口

题目描述

GodV: How to reverse if it is already reversed? Zoe: You need a good direction, and reverse it again. Flag: tqlctf{.+}
题目文件见文章首部附件。

读懂源python代码

很多python代码都不熟练了,需复习一下。

  1. bytes(字符串,编码方式),将字符串转化为字节对象
  2. ''.join(<list>),将一个字符串列表拼接为一整个字符串,且间隔为’’
  3. {0:08b}".format(x)0表示第零位参数,:表示格式化开始,08b表示格式化为二进制且长度为8位,不够长度的左侧补0。
  4. randint(<inta>,<intb>),返回[a,b]之间的随机整数,可以取到a和b

突破口

(1)id_bytes = bytes(id, "ascii") 可以推测输入的id可以按ascii显示,即都为可视字符,查ascii编码可知,可视字符的首位都为0。所以bits的样式中每8位的首位都为0。

(2)分析get_lit(i),可知当get_lit(i)>0,则bits第i位一定为1,<0则为0。同时可以根据get_lit(i)的值逆推出i,即若x=get_lit(i),则i = 绝对值x - 1。

(3)分析最后的for循环,输出结果第一位为n,第二位N,从第三位开始每三个为一组。必定有一个true_lit和两个rand_true(符号不定,可能为-rand_true或rand_true),显然我们无法区分true_lit和rand_true,但若有已知bits一些位数上的值时,我们可以通过逆推true_lit和rand_true对应的bits位置的值,来判断其是否是**-rand_true**,那么如果判断出了有两个-rand_true则另外一个数一定是true_lit!

根据(1)中的分析,首位都为0,则可以根据已知的部分bits位置的值推出其他true_lit,进而确定其他bits位置的真实值,随后再根据更新后的bits,再继续推其他位置的bits值,不断循环最终得到完整的bits,最后将bits按每8位转化为ascii字符并连接起来得到flag.

# -*- coding: utf-8 -*-
# @Author   : zilong
# @Time     : 2025/7/10 17:24with open('output.txt', 'r') as f:data = f.read().split('\n')  # 返回一个字符串列表,每行一个元素n = int(data[0])
N = int(data[1])flagList = ['_' for i in range(n)]
for i in range(n):if i % 8 == 0:flagList[i] = '0'
print(''.join(flagList))def get_bits_index(lit):lit = abs(lit)return lit-1while '_' in flagList:for i in range(2, N * 3, 3):opp_neg = [0] * 3for j in range(3): # 遍历一组数(3个数)if int(data[i+j]) > 0 and flagList[get_bits_index(int(data[i+j]))] == '0':opp_neg[j] = 1elif int(data[i+j]) < 0 and flagList[get_bits_index(int(data[i+j]))] == '1':opp_neg[j] = 1if sum(opp_neg) == 2:true_lit = int(data[i + opp_neg.index(0)])true_id = get_bits_index(true_lit)if true_lit < 0:flagList[true_id] = '0'else:flagList[true_id] = '1'if '_' not in flagList:break
flag = ""
for i in range(0, n, 8):flag += chr(int(''.join(flagList[i:i+8]), 2))
print(flag)
http://www.dtcms.com/wzjs/570229.html

相关文章:

  • 哪些网站结构是不合理的中国菲律宾最新局势
  • 网站seo啥意思广西建设网怎么查询证件
  • 做流程图用什么网站好一般的网站开发语言用什么
  • flash网站开发用什么语言wordpress自动采集
  • 商务网站的建设步骤wordpress链接 结尾
  • 建设网站是什么样的网站集约化建设 技术
  • 在线搭建网站公司网站排名怎么做
  • 网站开发 工资高吗百度收录查询工具
  • 从哪个网站找钢做的微商中山 网站建设 骏域
  • 傻瓜式建站软件百度的网站名
  • 秦皇岛昌黎县建设局网站电商网站前台模块
  • 建设旅游网站缺点北京专业建设网站公司
  • 怎么提交自己的网站网页制作基础教程自学
  • 做网站和做软件哪个难多语言网站开发
  • 台州建站平台网络最好的运营商
  • 网站页面关键词优化不囤货的网店怎么开
  • 石家庄哪里有做网站开源项目网站怎么做 带视频
  • 装修公司网站建设设计作品企业宣传推广怎么做
  • 北京哪些做网站的公司好wordpress汉化客户端
  • 芜湖灵创网站建设今科云平台网站建设技术开发
  • 中山企业网站多少钱东莞网站营销策划
  • wordpress登录网站花店网页设计模板
  • 手机设计培训网站建设做公司网站注意事项
  • 固定ip做网站温州专业网站制作设计
  • 手机网站怎么设置成电脑版的做网站站怎么赚钱吗
  • 云梦网络 网站模板东台网站开发
  • 网站建设设计公司 知乎烟台商城app开发
  • 网站的建设ppt模板网站建设知识网
  • 成都大丰五块石网站建设电商设计公司
  • 做网站遇到的问题及解决方法有专门为个人网站做推广的吗