REVERSE-PRACTICE-JarvisOJ-3

REVERSE-PRACTICE-JarvisOJ-3

    • 爬楼梯
    • 软件密码破解-1
    • Classical CrackMe2
    • Smali

爬楼梯

apk文件,放到模拟器里运行一下
“爬一层楼”按钮可按,每按一下,“已爬的楼层”加1层
“爬到了,看FLAG”按钮不可按,应该是“已爬的楼层”等于“要爬的楼层”时,按钮可按,获得flag
plt-running
jadx-gui打开,在com.ctf.test.ctf_100.MainActivity中,静态加载了ctf库
主要的逻辑在onCreate方法中,要爬的楼层设置为随机数,当已爬的楼层大于等于要爬的楼层时,按看flag按钮即可得到flag
plt-logic
程序开头将看flag的按钮设置为不可按,满足条件后设置为可按,考虑patch程序,让程序开头就将看flag的按钮设置为可按
用jeb打开apk,方便找到java语句对应的汇编代码
可以看到,在onCreate方法开始的部分,v5为0,在下面Button->setClickable中作为参数,将看flag按钮设置为不可按,将v5patch为1时,使得看flag按钮在开始时就被设置为可按
plt-asm
ApkToolBox反编译apk,打开CFF_100\smali\com\ctf\test\ctf_100\MainActivity.smali,找到对应位置并修改保存
plt-patch
将整个CFF_100文件夹拖入ApkToolBox回编译,得到一个新的apk
在模拟器中运行,可以看到,看flag按钮可以直接点击获得flag
plt-flag

软件密码破解-1

32位MFC程序,先用xspy查“确定”按钮的id,为0001
softpwd-mfc
再查整个窗口,知道“确定”按钮对应的响应函数为(0x0040)1BB0
softpwd-mfc
ida打开该MFC程序,左侧函数窗搜索1BB0,来到sub_401BB0函数
分析可知,将输入与byte_5777F8数组按下标顺序地做异或运算,结果与已知数据比较,验证输入
softpwd-sub_401BB0
byte_5777F8数组的元素在静态分析中不能得到,需要attach程序调试
写逆异或运算脚本即可得到flag

res=[0x1B, 0x1C, 0x17, 0x46,0xF4, 0xFD, 0x20, 0x30,0xB7, 0x0C, 0x8E, 0x7E,0x78,0xDE]
byte_5777F8=[0x28, 0x57, 0x64, 0x6B, 0x93, 0x8F, 0x65, 0x51, 0xE3, 0x53,0xE4, 0x4E, 0x1A, 0xFF]
flag=""
for i in range(len(res)):flag+=chr(res[i]^byte_5777F8[i])
print(flag)
#3Ks-grEaT_j0b!

Classical CrackMe2

exe程序,输入密码,输入错误时还会打印一串base64
查壳,发现是.Net程序,有一句"don’t Unpack with : de4dot",不要使用de4dot解包
CC2-shell
用de4dot可以解包,不过解包后的程序不能运行,
dnSpy打开原来的程序,由于没有unpack,会有一些不明白意义的字符,这时可以开另一个dnSpy打开解包过的程序,对照着来看
对照着看,发现按下"GETFLAG"按钮后,来到这个地方进行判断
text是输入,text2是将输入text传入"Wm@@9OrPgw\u0020d/p?i,N>lh@Y!"的一个方法后返回的内容,然后判断 text是否为空以及 text2是否与已知相同
CC2-logic
来看调用的"Wm@@9OrPgw\u0020d/p?i,N>l
h@Y!“的那个方法,发现是将传入的参数进行AES.ECB模式的加密,名为bytes的数组作为加密密钥Key,密文用base64编码后再返回
CC2-AES
调试,可以知道加密密钥Key为"pctf2016pctf2016pctf2016pctf2016”
CC2-key
text2要比较的字符串为"x/nzolo0TTIyrEISd4AP1spCzlhSWJXeNbY81SjPgmk="
CC2-cipher
写解AES脚本即可得到flag

from Crypto.Cipher import AES
import base64
key="pctf2016pctf2016pctf2016pctf2016"
cipher="x/nzolo0TTIyrEISd4AP1spCzlhSWJXeNbY81SjPgmk="
cipher=base64.b64decode(cipher)
aes=AES.new(key,AES.MODE_ECB)
print(aes.decrypt(cipher))
#PCTF{Dot_Net_UnPack3r_yoo}

Smali

.smali文件,jadx-jui打开
主要逻辑为,使用已知的密钥和密文,解密ECB模式的AES
smali-logic
写解密AES脚本即可得到flag

from Crypto.Cipher import AES
import base64
key="cGhyYWNrICBjdGYgMjAxNg=="
key=base64.b64decode(key)
cipher="sSNnx1UKbYrA1+MOrdtDTA=="
cipher=base64.b64decode(cipher)
aes=AES.new(key,AES.MODE_ECB)
print(aes.decrypt(cipher))
#PCTF{Sm4liRiver}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

管理全局包、缓存和临时文件夹

每当安装、更新或还原包时,NuGet 将管理项目结构多个文件夹之外的包和包信息: name说明和位置(每个用户)global‑packagesglobal-packages 文件夹是 NuGet 安装任何下载包的位置。 每个包完全展开到匹配包标识符和版本号的子文件…

REVERSE-PRACTICE-JarvisOJ-4

REVERSE-PRACTICE-JarvisOJ-4Classical CrackmeFindKeyClassical Crackme exe程序,输入注册码,输入错误弹窗 查壳发现是.Net程序,dnSpy打开(要不要用de4dot unpack无所谓,这里打开的是解包过的程序) 按下“…

在解决方案中所使用 NuGet 管理软件包依赖

使用程序包恢复功能可以在提交源代码时, 不需要将 packages 中的程序集文件提交到源代码管理中,大幅减少项目的尺寸。所有NuGet程序包都存储在解决方案的Packages文件夹中。 要启用程序包恢复功能,可右键单击解决方案(注意,不是右…

REVERSE-PRACTICE-BUUCTF-1

REVERSE-PRACTICE-BUUCTF-1easyrereverse1reverse2内涵的软件easyre exe程序,无壳,ida分析 左侧函数窗找到main函数,flag提交即可 reverse1 exe程序,运行后提示输入flag,ida分析 左侧函数窗无明显的main函数&#…

REVERSE-PRACTICE-BUUCTF-2

REVERSE-PRACTICE-BUUCTF-2新年快乐[BJDCTF 2nd]guessgamehellowordxor新年快乐 exe程序,运行后提示输入正确的flag,有upx壳,常规工具脱壳即可 ida分析,左侧函数窗找到main函数,F5反汇编,简单的输入比较逻…

REVERSE-PRACTICE-BUUCTF-3

REVERSE-PRACTICE-BUUCTF-3reverse3不一样的flagSimpleRevJava逆向解密reverse3 exe程序,无壳,用ida分析 左侧函数窗最后找到main函数,F5反汇编 先base64,然后顺序加上对应的下标,最后比较,写逆脚本即可得…

console对象的方法log、info、warn、error的区别及几个实用的方法

先说一下console,JavaScript 原生中默认是没有 Console 对象,这是某些浏览器提供的内置对象。 在不同的浏览器里显示可能不同 下面的运行截图中,图中的灰色是运行的这句,灰色下面是此句运行的结果 log()、info()、warn()、error()…

认识ASP.NET 5项目结构和项目文件xproj

ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方。 我们先用 Visual Studio 2015 建立一个全新的 ASP.NET 5 网站项目,打开VS2015&…

REVERSE-PRACTICE-BUUCTF-4

REVERSE-PRACTICE-BUUCTF-4刮开有奖[BJDCTF 2nd]8086[GKCTF2020]Check_1n[GXYCTF2019]luck_guy刮开有奖 exe文件,运行后无任何提示,无壳,用ida分析 WinMain->DialogBoxParamA->DialogFunc DialogBoxParamA函数: DialogFun…

REVERSE-PRACTICE-BUUCTF-5

REVERSE-PRACTICE-BUUCTF-5findit简单注册器[GWCTF 2019]pyre[BJDCTF2020]JustREfindit apk文件,直接上jadx-gui分析 验证输入的逻辑比较简单,写脚本即可 安装这个apk,将字符串输入即可得到flag,当然也可以直接写输出flag的脚本…

REVERSE-PRACTICE-BUUCTF-6

REVERSE-PRACTICE-BUUCTF-6rsaCrackRTF[2019红帽杯]easyRE[ACTF新生赛2020]easyrersa 解压出来是.enc和.key两个文件,.enc是密文,.key存放着公钥信息 使用在线网站或者openssl解析.key文件中存放着的公钥信息 可获知rsa需要的模数n和公钥e 使用在线网站…

vs项目结构解析

当我们用VS开发一个项目的时候,首先应该清楚用VS这个IDE生成的一些文件和文件夹是什么意思,起什么作用,什么场合下使用。 因为我使用的是VS2015,就以这个为例来进行一些说明: 首先要做的是更改你的操作系统&#xff…

REVERSE-PRACTICE-BUUCTF-7

REVERSE-PRACTICE-BUUCTF-7Youngter-drive[ACTF新生赛2020]rome[FlareOn4]login[SUCTF2019]SignInYoungter-drive exe程序,运行后提示输入flag,有upx壳,脱壳后ida分析 main函数中获取输入并拷贝,开启了两个线程分别运行StartAddr…

REVERSE-PRACTICE-BUUCTF-8

REVERSE-PRACTICE-BUUCTF-8[GUET-CTF2019]re相册[V&N2020 公开赛]strangeCpp[BJDCTF2020]easy[GUET-CTF2019]re elf文件,有upx壳,脱壳后ida分析 字符串交叉引用来到主逻辑函数sub_400E28 逻辑清晰,获取输入,验证输入&#xf…

NuGet的使用、部署、搭建私有服务

目录 前言 什么是NuGet?为什么要使用NuGetNuGet的优点使用 Get-Help NuGetInstall-PackageGet-PackageUninstall-Package制作NuGet库包搭建NuGet服务器上传NetGet库包新增NuGet源总结前言 什么是NuGet? Nuget是一个.NET平台下的开源的项目,它是Visual Studio的…

REVERSE-PRACTICE-BUUCTF-9

REVERSE-PRACTICE-BUUCTF-9[ACTF新生赛2020]usualCrypt[MRCTF2020]Transform[V&N2020 公开赛]CSRe[WUSTCTF2020]level1[ACTF新生赛2020]usualCrypt exe程序,运行后提示输入flag,无壳,ida分析 main函数逻辑清晰,获取输入&…

ASP.NET MVC Beta 新特性之 IValueProvider

在刚发布的ASP.NET MVC Beta版中,在UpdataModel方法中提供了一个带有IValueProvider参数的重载。那么这个IValueProvider有什么用呢? 我们先来看一个简单的场景,例如我们的blog系统有一个Post的对象,Post对象有一个Tags属性和Cat…

REVERSE-PRACTICE-BUUCTF-10

REVERSE-PRACTICE-BUUCTF-10[GWCTF 2019]xxor[HDCTF2019]Maze[WUSTCTF2020]level2[BJDCTF2020]BJD hamburger competition[GWCTF 2019]xxor elf文件,无壳,用ida分析 main函数的逻辑清晰,首先获取输入,为6个int64的值,…

Axure教程 axure新手入门基础(1)

axure新手入门基础(1) 名词解释: 线框图:一般就是指产品原型,比如:把线框图尽快画出来和把原型尽快做出来是一个意思。 axure元件:也叫axure组件或axure部件,系统自带了一部分最基础常用的,网上…

REVERSE-PRACTICE-BUUCTF-11

REVERSE-PRACTICE-BUUCTF-11[FlareOn4]IgniteMe[MRCTF2020]Xor[GKCTF2020]BabyDriver[MRCTF2020]hello_world_go[FlareOn4]IgniteMe exe程序,运行后提示输入flag,无壳,ida分析 主逻辑在start函数中,读取输入后check,验…