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

BUUCTF[ACTF新生赛2020]easyre

[ACTF新生赛2020]easyre

一、查壳

有壳,脱壳得:

二、IDA分析
1.main

2.分析

综合看,可以得:flag=v6+v5+v10

16-17行:v6=' ACTF{ ' v10=' } '

所以重点在v5,关键语句是23-24行

要成功必须:v4[i] == byte_402000[*((char *)v5 + i) - 1]

v4=" *F'"N,"(I?+@ "(13行)

因为((char *)v5 + i)=v5[i]

所以byte_402000[*((char * )v5 + i) - 1] =byte_402000[i - 1]

byte_402000=' ~}|{zyxwvutsrqponmlkjihgfedcba`_^][ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$# !" '(通过Hex View表获取更方便)

所以要v5要使byte_402000.find(i) + 1

3.写脚本(里面的 ' 要写成 \ ')

n="*F'\"N,\"(I?+@"
m='~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(\'&%$# !"'
flag=''
for i in n:
    flag+=chr(m.find(i)+1)
print(flag)
---------------------------------------------------------
U9X_1S_W6@T?
三、答案

flag为ACTF{U9X_1S_W6@T?}

因为我做的是BUUCTF上面的所以要写成flag{U9X_1S_W6@T?}


知识
1.python的find()语法
定义和用法

find() 方法查找指定值的首次出现。

如果找不到该值,则 find() 方法返回 -1。

find() 方法与 index() 方法几乎相同,唯一的区别是,如果找不到该值,index() 方法将引发异常。

语法
string.find(value, start, end)
参数值
参数描述
value必需。要检索的值。
start可选。开始检索的位置。默认是 0。
end可选。结束检索的位置。默认是字符串的结尾。
实例

单词 "welcome" 在文本中的什么位置?

txt = "Hello, welcome to my world."
x = txt.find("welcome")
print(x)
-----------------------------
1

字母 "e" 在文本总首次出现的位置:

txt = "Hello, welcome to my world."
x = txt.find("e")
print(x)
---------------------------------
1

如果只搜索位置 5 到 10 时,字母 "e" 在文本总首次出现的位置:

txt = "Hello, welcome to my world."
x = txt.find("e", 5, 10)
print(x)
------------------------------------
8
2.for i in n: 和 `for i in range(n)

是两种不同的循环结构,它们在处理字符串时的行为不同。

for i in n:
  • 这种循环结构用于遍历字符串 n 中的每个字符。

  • 在每次迭代中,变量 i 会被赋值为字符串 n 中的一个字符。

  • 例如,如果 n = "*F'\"N,\"(I?+@",那么 i 会依次取值 *F'"N 等。

for i in range(n):
  • 这种循环结构用于遍历从 0 到 n-1 的整数序列。

  • range(n) 生成一个从 0 到 n-1 的整数序列。

  • 但是,如果 n 是一个字符串,range(n) 会引发错误,因为 range() 函数的参数必须是整数。

  • 例如,range(5) 会生成序列 [0, 1, 2, 3, 4],但 range("hello") 会引发 TypeError

正确的使用方式
  • 如果你想遍历字符串 n 中的每个字符,应该使用 for i in n:

  • 如果你想遍历一个整数序列,可以使用 for i in range(len(n)):,其中 len(n) 是字符串 n 的长度,这样 i 将从 0 到 len(n)-1


http://www.kler.cn/a/505177.html

相关文章:

  • ubuntu22.04:解决google chrome 访问百度页面加载慢的问题
  • C++ 并发编程之std::find的并发版本
  • centos使用dpdk库
  • 【AI学习】地平线首席架构师苏箐关于自动驾驶的演讲
  • 华为数通HCIE备考经验分享
  • 力扣26题-删除有序数组中的重复项
  • SpringAOP前置——代理模式
  • 光谱相机的光谱分辨率可以达到多少?
  • 豆包MarsCode:可以在线用的智能AI编程助手
  • favor的本质
  • 2024年11月系统架构设计师考试复盘
  • 如何通过腾讯云平台执行SFT微调大语言模型
  • Vue篇-07
  • Python爬取豆瓣图书网Top250 实战
  • 【工具类】获取日出日落时间的Java工具类
  • 全网唯一的工具 苹果手机备忘录全自动导出备份
  • QT与基恩士PLC采用上位链路通信实现
  • Jmeter配置服务代理器 Proxy(二)
  • 云计算技术深度解析与代码实践
  • 机器学习实战33-LSTM+随机森林模型在股票价格走势预测与买卖点分类中的应用