Somebody-内存取证
下载文件得到一个vmem后缀,用内存取证工具volatility-master打开
先使用python2 vol.py -f body.vmem imageinfo获得profile信息
根据提示,知道桌面放东西,然后使用 python2 vol.py -f body.vmem –profile=Win7SP1x64 filescan | grep “Desktop” 查找和桌面有关的东西
找到可以的flag.zip和anything.zip,直接使用python2 vol.py -f body.vmem –profile=Win7SP1x64 dumpfiles -Q 0x000000007fa7b9c0 -D ./ 指令提取,得到的flag.zip是没用的,而anything.zip文件是加密的,在winrar可以看到提示
根据提示查找这台机子的密码
根据提示:哈希即可,把这四个哈希密码放到zip尝试,最后一个哈希密码正确了。
极客大挑战-unsign-反序列化
拿到题目整体观察一下,可以发现这是pop链相关的反序列化
反推法:从终点类反推pop
可以很明显地看到web类就是我们的终点,终点是web类的魔术方法__get
贴一个魔术方法的笔记
想要触发get,就必须使得调用的成员方法不存在。观察整体,可以看到在lover类代码”return $this->yxx->QW“在调用成员
乍一看好像没有什么毛病,其实我们如果使得这里的yxx变成web,那么$this->yxx->QW就会改写成$this->web->QW,而web类里并不存在QW这个成员,就可以触发魔术方法_get()
那么想要触发return $this->yxx->QW,就必须触发lover类的_invoke()这个魔术方法,而这个_invoke()魔术方法的触发方法是把对象当成函数调用。所以我们再次观察整体寻找突破口
可以发现在syc类中有一串$function=$this->cuit; return $function(); ...
unsign-反序列化-亲爱的领导构造例子记录
刚刚学了学长的构造方法,这里放个例子
原题
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859<?php//flag.phpclass oooooo { public $var='flag.php'; public $ld; public $sb; public function __destruct() { $this->ld=&$this->sb; } public function end($value) { echo "end\n"; $this->sb=md5(rand(1, 10000)); if ($this->ld===$this- ...
攻防世界 RE-666
题目的main函数
按照顺序,题目将输入v5传递给encode,返回为s,s拿去和enflag比较
进入encode函数看看
批评某人指针没学就乱来
这里它将传入的a1(也就是刚刚传入的v5)拿进去进行各种异或操作,返回a2这个数组。从逆向的角度分析a2就是刚刚enflag的值。所以我们要构造逆向,目标就是将a1求出来解法如下图所示
这里做一些指针方面的说明
enflag = r’ ’这条语句可以将字符串放进去
可以直接调用enflag[]作为列表
v3 = [0]*18意思为定义一个长度为18的列表
特别注意!!!
安卓so逆向
这里用极客大联盟的安卓题为示例
打开程序,这道题主要是让我们砍树,砍了很多遍才允许我们验证flag
开局直入主题,打开MainActivity,发现按钮事件
当我们砍树了777次之后,就会将我们传入的text和”Sycloveforerver”一起传入一个叫MainActivity.l0o0l的函数
我们点入MainActivity.l0o0l这个函数看一下
这里明显有一个调用so的特征。这里科普一下so
*开发Android应用时,有时候Java层的编码不能满足实现需求,就需要到C/C++实现后生成SO文件,再用System.loadLibrary()加载进行调用,成为JNI层的实现。常见的场景如:加解密算法,音视频编解码等。在生成SO文件时,需要考虑适配市面上不同手机CPU架构,而生成支持不同平台的SO文件进行兼容。目前Android共支持七种不同类型的CPU架构,分别是:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起 ...




