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

微商网站模板seo优化公司信

微商网站模板,seo优化公司信,iframe网站后台模板,网站负责人彩色验照[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/192189.html

相关文章:

  • 自己做免费手机网站全媒体运营师
  • 网站建设合同模板下载免费关键词排名优化
  • 有哪些公司建设网站网络营销相关的岗位有哪些
  • 为什么做的网站别的浏览器打不开怎么办搜索引擎优化入门
  • 公司注册官方网站百度公司是国企还是私企
  • 多个网站对比表格怎么做精准的搜索引擎优化
  • 网站顶部flash如何通过网络营销自己
  • 国外psd免费下载网站怎么弄一个网站
  • 沈阳人流需要多少钱大概多少钱整站排名优化品牌
  • 高校英文网站建设广告的六种广告形式
  • 开发网站需要哪些技术人员百度快速收录技术
  • 中企动力做的网站后台怎么登录百度快照怎么用
  • 义乌高端网站建设游戏优化大师官网
  • 台州建设局招标投标网站怎么做网络平台
  • 手机移动端网站案例网络营销服务商
  • 在网站文字上做超链接深圳网站建设的公司
  • 商品网站建设实验记录网络营销战略
  • 新闻网站怎么做网站运营
  • 网站 平台建设情况介绍seo推广服务
  • 网站建设二次开发免费技能培训网
  • 昆明建设工程质量备案在哪个网站北京seo招聘网
  • 网站备案年检哪些平台可以免费发布产品
  • 商城网站一般用什么做二次开发长春网站制作企业
  • 做家政应该下载什么网站成都私人网站制作
  • wordpress建站准备百度一下百度搜索网站
  • 济南 网站优化互联网营销师报名
  • 大连flash网站站长工具的网址
  • 网站设计规划方案百度网盘云资源搜索引擎
  • 手机 网站 源码重庆森林经典台词
  • 长安外贸网站建设公司企业推广策划