首页
社区
课程
招聘
[原创]看雪.京东 2018CTF 第十三题 NeuralCrackme Writeup
发表于: 2018-7-12 00:46 3794

[原创]看雪.京东 2018CTF 第十三题 NeuralCrackme Writeup

2018-7-12 00:46
3794

首先声明,本人对神经网络一窍不通,如有表述错误请见谅。
本题构造了一个四层人工神经网络模型,原始输入变换后形成的两个浮点数为输入进入网络计算,网络输出为一个浮点数,通过输入之和与输出之间的逼近精度、输出值的范围、原始输入的格式等方式进行检验,确定唯一解。

下面是基本按着做题过程叙述的。

程序是MinGW64编译。试运行情况如下:
run

搜索字符串并未发现打印信息,原来所有字串全被异或编码了,脚本解码后情况如下:
string

正式开始分析程序。

开始进行一些数值的初始化后,要求输入key。
main1

接着检查输入key的长度为10,并进行unhex,要求输入为数字+A-F,否则转换结果不为5字节长度,报错退出。
main2

再接着将输入变换得到的5字节的前两字节赋值给一个64位浮点数的高位,后三字节赋值给另一个浮点数的高位,构造出两个浮点数,代入函数4015E0进行计算,然后检查计算结果。
main3
main4

照主流程来看,关键的计算函数4015E0应该就是题名说的神经网络了。
对于我这种既没有数学基础又不懂AI相关知道的人来说,太难为人了。
无法,滚去粗略学习了大约一晚上的神经网络。

计算函数代码似乎比较简单,如下:
compute

按我一晚上的学习经验来看,这是个前馈神经网络FFNN(错了误怪),4层结构。
在第2层,18个神经元,两个输入加权求和后有一个sigmoid激活函数;第3层只是加权求和,后面还有个线性计算,我也把这归进来了。

具体计算过程代码中已经标出。

计算最后部分还有一个校验,网络输入的一个浮点数在(1,10)之间,否则计算的输出值为10.0,就不能通过主流程的check。

这神经网络似乎是理清了些(也不管对不对),但是怎么求解呢,不知道。先详细分析下check规则吧。

计算出来后,其结果以%lf格式覆盖原始输入。并检查第二字节为.,即计算结果s

0 < s < 10

计算结果的前三个数字的平方和不小于241,如果记s1,s2,s3为前三个数字,本来式子是:

这是要逼近10啊。

此外还有一个校验,翻译一下,就是原始输入的第6字节为0。

下一个校验是:(记网络输入的两个浮点数为num1,num2)

abs(num1+num2-s) < 0.003

这是输出逼近输入和的意思啊,结合上面输入逼近10和网络输入值的范围,那几乎可以先假定题意设定网络输入为10或无限接近10。

整理下格式要求、主流程及计算流程的校验:

这么多的条件限制,看来并不能从网络计算方法中得出结果的唯一性。开始还想从网络计算得出唯一结论,现在不管能不能就此得出,但是已经没有这个必要了。

因为,从上面的校验分析看出,实际上网络的计算过程已经不重要了,网络计算是死的,唯一变的是输入与输出,两个网络输入的浮点关系也是定的,如果定其中一个为变量,那么则可以将网络计算看来一个黑盒函数。

于是我就以第一个浮点数为变量,在输入范围内画出了墨盒函数。
figure1
下图为两段包含符合输出值要求的图:
figure2

纵轴0处为10,其上数值为相对10的偏移。
如果放大点范围,第一个浮点数的范围为:

本题还有个隐藏条件,是关于浮点数的。第一个浮点数实际上只用了输入的两个字节,第二个浮点数只用了输入的三个字节,其余字节为0。这两个数不是随便的浮点数,存储值是要符合字节格式要求的。据测试,num1其值应该是0.0625的倍数。在脚本求解的过程中,为防止错过解,将步长又进一步放小。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-7-12 11:55 被poyoten编辑 ,原因: 修改笔误
收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
2
这个牛,基本分析出神经网络的结构了,赞一个
2018-7-12 18:21
0
雪    币: 13713
活跃值: (2851)
能力值: ( LV15,RANK:2663 )
在线值:
发帖
回帖
粉丝
3
lelfei 这个牛,基本分析出神经网络的结构了,赞一个
还不是猜错结构了
2018-7-12 19:28
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
4
poyoten 还不是猜错结构了[em_5]
你的解法是最接近神经网络计算过程的,其他人都太暴力了
2018-7-12 21:14
0
雪    币: 13713
活跃值: (2851)
能力值: ( LV15,RANK:2663 )
在线值:
发帖
回帖
粉丝
5
lelfei 你的解法是最接近神经网络计算过程的,其他人都太暴力了[em_2]
太血腥了
2018-7-12 21:28
0
游客
登录 | 注册 方可回帖
返回
//