LCTF (easyeasy-200)
首先安装,看看app是什么样的。
有点奇怪,没有点击确定的按钮。然后拖到JEB反编译。
要求输入的字符串的长度要在35-39之间(包括边界值),然后会调用Format().form函数。如下图。
可以看到,form函数是要返回字符串[5,38],这里可以判断出要输入字符串的长度必须要大于38,否则就会出错。结合上面的分析,那么长度可能会是38或者39了。
再往下,要求format后的字符串长度要大于等于32才会调用check函数。
接着进check函数追下去。
首先看它的构造函数, 这个函数莫名其妙。调用checkPipes,判断路径是否存在,若两个路径中存在任何一个就会被赋值为ture并返回。当两个路径都不存在时赋值为false。
接着再往下分析。调用native层函数并传入emulator,结果为真返回false,反之调用native层函数checkPasswd并传入pass。
这里推测是起迷惑作用的,反正管你emulator是什么,反正想拿到flag就必须得调用后面的checkPasswd。换句话说,checkPipes也没有分析的意义了。
那么接下来反编译app,用IDA打开下图所示的文件。(为什么选这个,我也忘了,反正选这个没错)
之后,我就在这里卡住了, checkPasswd 的 IDA反编译的代码十分晦涩,而且由于自己的畏难心理,导致静不下心来分析,所以上午只看了一会就放弃了。看了网上的WP。这些WP都很玄学,都是先找到那串base64(具体怎么找的也没说)然后解码,倒置,flag就get了。我想这样的话有什么意思,于是下午就自己硬怼了。然后我认为自己分析的还是有点东西的,而且网上对这个题的WP也不详细,于是写下自己的见解。
sub_8f7c,三个参数都与输入的str无关,这里我想了好久,一开始认为是加密函数,后来推测出这个函数作用就是为了申请内存,并且把第二参数地址传递给第一个参数。为什么原因有2.
1.如果跟进这个函数,会发现下图所示,有create
2.这个函数被多次调用,观察这些函数,就可以更加确认了。
sub_8F7C搞清楚后,接着往下分析,如下图,具体分析已在图中标明。
在分析sub_6ED0时,存在下图所示字符
所以从逻辑上看,sub_6ED0是把v7放入v17中的推论是站得住脚的。
接着往下。
encrypt代码很难懂。先把这个函数放一放,来看看secret这个变量存储的值到底是什么。
鉴于以往的经验,在IDA中双击这个值就能看到它的值。但是这里不一样,他是位于bss段的数据,并没有值。选中secret,按X,有一个520C函数也引用过这个值,点开会发下下图。
很熟悉,又见到8F7C这个函数了。上面我们分析过,这个函数的作用其实就是把第二参数传递给第一个参数。换句话说secret被赋值了这串base。
但是后面下面那个是怎么回事?
我们回头再去看encrypt加密函数就会恍然大悟了。如下图
看,1D09C中存储的是base64的那张表(对base64编码原理不清楚的可以去百度,这里就不赘述了,写了半下午好累╮(╯-╰)╭),这个encrypt就是个base64加密算法,实锤了。
到此为止。总结一下。
其实就是接受Java层的参数,倒置后base64加密,然后与内置的那串base作比较,一样返回ture,反之false。
那么为什么这个题做出来的人这么少呢?我觉着要是上面几个关键函数告诉你他是干什么用的,比如encrypt告诉你是个base64算法,我想肯定这个题难度会大大降低把。
问题的关键是不知道它的作用,只能自己去推理,面对这么多晦涩难懂的代码,去找出它的实际意义,我想这大概就是逆向的难处和魅力吧。
LCTF (easyeasy-200)的更多相关文章
- iis6 服务器做301跳转返回状态码200解决方法。
倘若你的配置和上图一样的话,在查询返回值是200的情况,你试着把你服务器上的安全狗或者防火墙,还有360网站卫士之类的安全软件停止试试,看是否能正常.
- AJAX回调函数,返回JSON格式,应该返回自定义状态STATUS,但是却返回200
返回200应该是方法已经执行通的意思,但是没返回自定义的status,仔细一看json格式拼错了...
- [HTTP Protocol] 200 OK (from cache)和304 Not Modified
含义 200 OK (from cache)直接从缓存中获取的内容并未请求服务器 304 Not Modified 请求服务器并和服务器比较 If-Modified-Since,若文件未改变,服务器返 ...
- 《实战Java虚拟机》,最简单的JVM入门书,京东活动,满200就减100了,该出手了
#京东满200—100单# 图书放血大卖了 <实战Java虚拟机>http://item.jd.com/11670385.html 参加京东满200减 100的大促,就在6.1这一天,仅此 ...
- $.ajax请求返回数据中status为200,回调的却是error?
$.ajax({ type:'get',//使用get方法访问后台 dataType:'json',//访问json格式的数据 url:'http://job.hainan.net/api/recru ...
- 常见HTTP状态码(200、301、302、500等)
HTTP状态码,它是用以表示网页服务器HTTP响应状态的3位数字代码.状态码的第一个数字代表了响应的五种状态之一. 1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于 HTT ...
- http statusCode(状态码) 200、300、400、500序列
201-206都表示服务器成功处理了请求的状态代码,说明网页可以正常访问. 200(成功) 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页. 201(已创建) ...
- 遭遇AutoMapper性能问题:映射200条数据比100条慢了近千倍
今天遇到了AutoMapper的一个性能问题,使用的是AutoMapper的Project特性,AutoMapper版本是3.3.0,代码如下: return await _repository .G ...
- 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?
前几天给大家免费送了个200兆SVN代码服务器(今天心情好,给各位免费呈上200兆SVN代码服务器一枚,不谢!),还木有领取的速度戳链接哦! 好几位园友拿到SVN服务器都对其赞不绝口,我也用这个服务器 ...
- 写在MongoCola在Github上获得200个Star之后
MongoCola MongoCola是一个开源的MongoDB管理工具. 由于最初版本的设计失误,所以现在只能在Windows上使用,虽然可以在OSX上使用,但是非常别扭. 契机 MongoCola ...
随机推荐
- SpringMVC配置文件详解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotation-driven />
原文地址:https://www.cnblogs.com/lcngu/p/5080702.html Spring配置文件详解:<context:annotation-config/>和&l ...
- top命令参数详解
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- .NET Core 3时代!如何使用DevExpress WPF创建应用
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- php类相关知识----类常量,静态变量
类常量 <?php class myuser { ;//定义的常量不带$符号,常量之前没有访问修饰符,常量之前没有修饰符号 public function monolog() { echo &q ...
- WCF概述
Tips:概念性的东西仅助理解,可以略过 概述 1.SOA概述 1).从三个问题开始 SOA是什么——面向服务架构.一种编程模式.一种架构模式.它将应用程序分成不同功能(服务)单元,再通过服务之间的接 ...
- electron-vue 引入OpenLayer 报错 Unexpected token export
electron-vue 引入OpenLayer 报错 Unexpected token export 解决办法: 在 .electron-vue/webpack.renderer.config.js ...
- ON_WM_MOUSEWHEEL无响应
问题:ON_WM_MOUSEWHEEL消息无响应 转动滚轮会导致Windows在有输入焦点的窗口(不是鼠标光标下面的窗口)产生WM_MOUSEWHEEL消息.所以当子窗口没有焦点的时候将收不到消息WM ...
- jquery scroll()方法 语法
jquery scroll()方法 语法 作用:当用户滚动指定的元素时,会发生 scroll 事件.scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口).scroll() 方法 ...
- php大文件传输断点续传源码
1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...
- JQuery动画之淡入淡出动画
1. 淡入动画 1.1 不带参数的淡入动画 格式: $(selector).fadeIn(); 示例代码: <!doctype html> <html lang="en&q ...