Polarctf之简单逆向

1. shell

用exeinfope查看下程序结构, 发现存在upx壳

用upx工具脱壳, upx.exe -d shell.exe

再使用IDAPro打开

#flag{crack_is_funny}

2. PE结构

将程序拖到010里, 修改为PE文件头:4D 5A 90 00

检测是否带壳

打开IDAPro进行分析



exp

a = "eobdx55:;4bgg30`:;b;e3`b`42f7`be`1b5b~"
flag = "" for i in range(0, len(a)):
flag += chr(ord(a[i]) ^ 3)
print(flag)
#flag{66987add03c98a8f0cac71e4cafc2a6a}

3. 拼接

拖入到010中, 发现504b0304, 是个压缩包

添加后缀.zip, 得到拼接.exe, 拖入工具看看有没有加壳

没加壳, 拖入到IDAPro中分析

#flag{03ff6cf238c5cd8e7b4ee1e9567ad5a4}

4. 加加减减

拖入到010发现是PK头, 说明是一个压缩包

修改后缀名.zip, 发现加加减减.exe, 拖入工具看看是否有壳

发现没有加壳, 拖入到IDAPro进行分析



exp

a = "ek`fz5123086/ce7ac7/`4a81`6/87b`b28a5|"
flag = "" for i in range(0, len(a)):
flag += chr(ord(a[i]) + 1) print(flag)
#flag{62341970df8bd80a5b92a7098cac39b6}

5. 康师傅

还是一个压缩包, 解压得到一个1.exe, 查看是否有壳

没有加壳, 拖入IDAPro进行分析



exp

a = "oehnr8>?;<?:9k>09;hj00o>:<o?8lh;8h9l;t"
flag = "" for i in range(0, len(a)):
flag += chr(ord(a[i]) ^ 9) print(flag)
#flag{17625630b7902ac99f735f61ea21a0e2}

6. 另辟蹊径

运行程序, 这是一道改值题

使用工具cheatengine, 打开cheatengine --> 打开进程 --> 修改数值为100000 --> 扫描



修改值为1, 再次点击图标



#flag{60983973c2ab87436914d71000e4b4e4}

7. use_jadx_open_it

此题考察使用jadx反编译工具, 将下载好的文件拖入到jadx中

搜索main函数

打开MainActivity, 就能看到flag

#flag{go_to_study_android}

8. re2

将文件拖入到010中, 发现是一个ELF文件, 查看下其位数



是64位程序, 使用IDA64打开, 定位到main函数, 发现flag

#flag{e10adc3949ba59abbe56e057f20f883e}

9. layout

是一个apk文件, 使用jadx打开, 搜索main, 定位到MainActivity, 发现flag



试着提交这个flag, 发现是个错误的flag

直接搜素flag{

#flag{andoird_re}

10. Why32

查看程序是否有壳

将程序拖入到IDA64中进行分析, 发现加密过程



exp

a = "2gfe8c8c4cde574f7:c6c;:;3;7;2gf:"
flag = "" for i in range(len(a)):
flag += chr(ord(a[i]) - 2)
print(flag)
#0edc6a6a2abc352d58a4a98919590ed8
明显的md5,使用cmd5网站得到最后结果

#flag{F1laig}

11. ?64

直接运行该程序

base64解码

将结果进行md5加密

#flag{5d15777a411724ee5d029caca1ca7298}

12. Sign Up

查看字符串, 双击数字, 找到加密前的账号和密码

查看Check_Data函数, 发现我们需要对账号前7位-1, 密码前四位-2即可



exp

a = "192168109"
b = "root"
res = ""
for i in range(7):
t = int(a[i]) - 1
res += str(t)
res += a[7:]
for j in range(4):
t = chr(ord(b[j]) - 2)
res += t
print(res)
#081057009pmmr

#flag{aa07caa2ff9e5b774bfca3b1f20c3ea0}

随机推荐

  1. Python基础-模块和面向对象-shutil、re、bs4、requests模块

    概要: 模块 自定义模块(已经讲了) 内置模块 shutil re 正则表达式 第三方模块 requests 模块 bs4 模块 面向对象: 面向对象(Object-Oriented Programm ...

  2. day2-变量与数据类型

    变量 概念:程序的基本组成单位 定义: 指定变量类型 根据值自行判断变量类型(类型推导) 省略var,定义赋值 var i int var i = 10 i, j := 20, 10 数据基本类型 基 ...

  3. Redis主从、哨兵

    之前安装了redis,但是单节点redis不可靠,现在搭建redis主从,提高可用性. 一.搭建一主二从 redis主从其实是读写分离,主节点写数据,从节点读数据. 1.准备三台redis机器.red ...

  4. sql server 与 mysql 中常用的SQL语句区别

    sql server 与 mysql 的区别   由于博主之前学过mysql,目前在学习SQL server,原来以为这两个数据库之间的sql语句应该不会有太大区别.但是学sql server(用的版 ...

  5. python3 ModuleNotFoundError: No module named 'CommandNotFound'

    前言 python3 报错:ModuleNotFoundError: No module named 'CommandNotFound' 这是 linux 安装多版本 python 时的一个遗留问题, ...

  6. SQL 常见优化指南

    这一章介绍SQL常见的优化,一共30条 第一条 对查询优化,要尽量的避免全表扫描,首先应该考虑在where以及order by 涉及的列上建立索引. 第二条 应尽量避免在where子句中对字段的nul ...

  7. Joker 智能开发平台:低代码开发的革新力量

    在软件开发领域,开发效率与灵活性始终是开发者们追求的核心目标.随着技术的迅猛发展,低代码开发平台逐渐成为行业焦点,而 Joker 智能开发平台凭借其卓越的性能和创新的功能,脱颖而出,为开发者们带来了前 ...

  8. CentOS 版本选择:DVD、Everything、LiveCD、Minimal、NetInstall

    CentOS 7.X,主要是下载的时候有很多版本供选择,如何选择? DVD版:这个是常用版本,就是普通安装版了,推荐大家安装.里面包含大量的常用软件,大部分情况下安装时无需再在线下载,体积为4G.Ev ...

  9. bug|初始化项目|sass-loader报错:TypeError: this.getResolve is not a function at Object.loader

    Module build failed: TypeError: this.getResolve is not a function at Object.loader的解决 npm uninstall ...

  10. BUUCTF---萌萌哒的八戒(猪圈密码)

    1. 问题 2.知识点 猪圈密码 3.解题 对应解题,套上flag{whenthepigwanttoeat}