吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4690|回复: 9
收起左侧

[CTF] tctf-2019-re-Elements-wp

[复制链接]
幼稚园 发表于 2019-4-2 12:42
第一次参加正式的ctf,当然是以玩玩的心态去的,但是还是很认真地看了两道RE题,当时只做出来这一道。想想应该写一个wp,就现在补上吧。这也是第一次在论坛发帖,可能写得不太清楚,请见谅,有问题请指正
进入main函数,先看第一段处理
ScreenClip.png

可以看到这是一个字母转小写的代码
再看第二段
ScreenClip.png
第二段开始的if语句很明显,输入的flag长度为0x2c,前几位是"flag{",最后一位是"}"
然后用strtok函数在"-"处截断,取前一段的字符进入while循环。并且这一段的长度得是12
这个while循环单看着看不懂,于是我动态调试了一波,dump出了由__ctype_b_loc()生成的数组,然后自己写了一个脚本看了下这个循环到底在干什么

这段代码的意思是flag中只能含有"a"-"f","0"-"9"这些字母,并且把这些字符转换成相应的值,也就是十六进制的数值。最后将他们分别放在每一位上,也就是说输入“123456789ABCDF”的话,最后v11的值就会是0x123456789ABCDEF
ScreenClip.png
接下来是这段代码,实在是太晦涩了,我就用了动调的方式,用类似黑箱的方法,看最后生成的数跟之前的v11的关系
一调试就发现,这部分的作用是将v11的值转化为double量,就是将123转化为123.000

再看最后一段代码
ScreenClip.png
这一段仍然是在while循环之中的,,所以先把前面的代码理一下
ScreenClip.png
(这里的变量名我已经改过了,x是x[0],y是x[1],z是x[3],这三个数是先后赋值的)
综合来看,程序的流程是输入flag{xxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxxxx},每一段都是12位十六进制数,它们分别代表三角形的三条边。其中第一次循环时v9的值为0,所以为了不退出程序,x的值必须是 62791383142154LL,也就是0x391BC2164F0A。之后两次循环因为v9的值不是0,所以没有其它条件就可以进入最后一段。

最后一段代码一看这个if语句就想到了三角形,x、y、z就是三角形的三条边。
Image.png
仔细观察,这个v20实际上就是三角形的面积(三斜求积法)
v21是内切圆半径,v22是外接圆半径
最后v21的值要等于 1.940035480806554e13 ,v22的值要等于 4.777053952827391e13

所以这就是一个已知三角形最短边长和内切圆外接圆半径,求另外两条边的数学问题。放进mathematica跑一下
ScreenClip.png
得到另外两条边长,所以第二段和第三段的值就知道了,flag也就确定了。
今天中午突然想起来应该写个wp,飞快地就写完了,欢迎大家来交流、指正

Elements.zip

2.7 KB, 下载次数: 3

题目

免费评分

参与人数 3威望 +1 吾爱币 +8 热心值 +3 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
1510300502 + 1 用心讨论,共获提升!
gink + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

太空独角兽 发表于 2019-4-3 14:36
之前看到这道题猜到应该是三角形,数学公式匮乏没有想到接下来该怎么写,今天看了豁然开朗,thx~
 楼主| 幼稚园 发表于 2019-4-3 15:51
本帖最后由 幼稚园 于 2019-4-3 15:54 编辑
太空独角兽 发表于 2019-4-3 14:36
之前看到这道题猜到应该是三角形,数学公式匮乏没有想到接下来该怎么写,今天看了豁然开朗,thx~

这个三斜求积法查了很久才注意到,但其实不知道这些公式也没关系。把式子原样放到mathematica中跑一下也能直接跑出来,面积用海伦公式或者用这个三斜求积法实际上没有区别。下面放一下原样照抄题目的式子 ScreenClip.png
 楼主| 幼稚园 发表于 2019-4-3 15:53
太空独角兽 发表于 2019-4-3 14:36
之前看到这道题猜到应该是三角形,数学公式匮乏没有想到接下来该怎么写,今天看了豁然开朗,thx~

所以说有时候关键是要会用数学工具。三角形什么的在这道题里感觉更多的是出题的思路,现在的数学软件解方程太方便了23333
unixcs 发表于 2019-4-3 16:05
现在CTF真的是越来越难了    数学功底不行的话还真做不出来
 楼主| 幼稚园 发表于 2019-4-3 16:12
unixcs 发表于 2019-4-3 16:05
现在CTF真的是越来越难了    数学功底不行的话还真做不出来

另外一道fixed-point的数学是真的难XD,最后是CRC128("flag{xxx..xxx}") = xxx...xxx,我连CRC128具体是什么原理都搞不清楚
中毒的陈晴 发表于 2019-4-4 20:21
谢谢楼主分享学到了赞一个
now4yreal 发表于 2019-4-26 23:43
本帖最后由 now4yreal 于 2019-4-26 23:51 编辑

楼主好,我在跑mathmatics的时候和你输入了一样的方程,为什么得到了奇怪的解,这个需要什么设置吗?E:\捕获.PNG

捕获.PNG
now4yreal 发表于 2019-4-27 10:33
now4yreal 发表于 2019-4-26 23:43
楼主好,我在跑mathmatics的时候和你输入了一样的方程,为什么得到了奇怪的解,这个需要什么设置吗?

[/ ...

额额 我知道错在哪里了 谢谢楼主
Timelife 发表于 2019-8-27 11:13
本帖最后由 Timelife 于 2019-8-27 11:28 编辑

只逆出来前17Bit,后面真没想到是个三角形
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 16:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表