做了一道逆向题目,主要关联到base64编码的知识点。下面做一分析。
题目如下:
  通过测试,可知它没有加壳。尝试使用IDA进行分析。
1.IDA分析文件
  打开文件后,按【shift+F12】即可转到本程序的字符窗口,运行程序可见【please enter the flag:】,找到此字符语句进行下一步分析。如下图。

  双击即可进入相关上下文程序。此时是汇编语言,emmmmmmm,找它的交叉引用,函数名为【sub_4156E0】,进入此函数,按【F5】查看伪代码。如下图所示。

  开始分析。程序首先通过【sub_4110BE】函数处理了输入的Str值,然后通过for循环对上一函数的输出值进行处理,再和Str2比较。双击Str2,可知其值是【e3nifIH9b_C@n@dH】。中间还有个函数,emmmmm,完全看不出其作用。

  (接下来应该是对函数【sub_4110BE】分析)
 
  全观这一块的逻辑可知还有个不能看到的函数【sub_411127】,它会是什么、会有什么影响呢?这个稍后分析。
  现在的流程应该是,首先分析sub_4110BE,再分析sub_411127,最后分析for循环,这三块使用户的输入变成了迷,那窥迷就得一个一个来。
(1)sub_4110BE分析
  进入了它的真实函数中,分析代码。

  留意标注的地方,可知这其实是一个base64编码的过程(后面会附上base64的相关内容)。此函数将输入值进行了base64编码操作。
(2)sub_411127分析
  在伪代码中发现打不开这个函数,说明它被保护了,那只好愉快地看对应的汇编代码了。
  在伪代码中,可知eax是决定分支走向的唯一因素。如下图。

  因此,要做的就是检测sub_411127是否变换了eax的值。下面是函数的内容。

  我做了标注,第7个和第8个红是紧挨着call那个调用函数的两个参数,我点进这个call并反汇编查看了,嗯,没有错。如下图。

  所以,前6个和后6个标注的红分别是进这个函数时对应参数的入栈和出栈情况,可知eax的值还是进这个函数之前的值。
  综上,此函数对判断的结果没有影响。
(3)for循环分析
  这个看来就很简单了,单纯地对base64编码后的每位数加了个固定值。

2.编码获取输入值
  上一大步骤说明了:用户输入值经过base64编码和那个for循环处理即可成为Str2,那反过来编个码就成功获取到初始值了。以下是我的代码。
import base64
 
str2="e3nifIH9b_C@n@dH"
slen=len(str2)
j=0
str1=""
for i in str2:
    str1+=chr(ord(i)-j)
    j=j+1
    
print str2
print str1
print base64.b64decode(str1)
 
  运行后,flag=。愉快地结束。
 
3.base64

http://ctf.bugku.com/challenges#love:bugku--love的更多相关文章

  1. http://ctf.bugku.com/challenges#Mountain%20climbing:bugku--Mountain-Climbing

      分析这道题,爽,能够结合IDA和ollydbg分析代码,美滋滋.但如果以后能直接根据汇编容易地看懂逻辑那就更好了. 参考链接: https://blog.csdn.net/cossack9989/ ...

  2. http://ctf.bugku.com/challenges#%E9%80%86%E5%90%91%E5%85%A5%E9%97%A8:bugku--逆向入门

      文件是:   分析挺简单,主要是data urls知识点.     首先使用peid检测是否加壳,发现它居然是jpg文件.使用notepad++查看,结果如下.   嗯,百度一下子,知道了data ...

  3. http://ctf.bugku.com/challenges#Timer(%E9%98%BF%E9%87%8CCTF):Bugku——Timer(阿里CTF)

      做了第一个android apk逆向题,很多工具啥的还没用过,再接再厉.   找到方法发现这个apk支持的SDK API是15-17,于是就下载了API 16并制作了模拟器,但发现还是运行不起来, ...

  4. http://ctf.bugku.com/challenges#%E6%B8%B8%E6%88%8F%E8%BF%87%E5%85%B3--游戏过关

      做成功这道逆向题了,哈哈哈哈.   启程.   运行了一下子程序,发现它是要保证所有灯亮着才会给flag.如下图所示.   我聪明滴认为首先可以通过关键字符串找到关键代码位置哦. 1.找到关键代码 ...

  5. http://ctf.bugku.com/challenges#Easy_Re

      今天做一道逆向题,开心,见证了自己汇编的用途.     首先看它是否加壳? 1.加壳检测   是vc编程的,没有加壳,可以愉快地分析了.   2.分析程序,找到flag.   首先运行一下子程序, ...

  6. bugku 神秘的文件

      题目链接: https://ctf.bugku.com/challenges#%E7%A5%9E%E7%A7%98%E7%9A%84%E6%96%87%E4%BB%B6 工具准备: 1.PC 2. ...

  7. ctf题目writeup(7)

    2019.2.10 过年休息归来,继续做题. bugku的web题,地址:https://ctf.bugku.com/challenges 1. http://123.206.87.240:8002/ ...

  8. ctf题目writeup(6)

    2019.2.2 依旧是bugku上面的题目,地址:https://ctf.bugku.com/challenges 1. 解压后是60多个out.zip,都是真加密,里面都是1kb的data.txt ...

  9. ctf题目writeup(5)

    2019.2.1 今天继续bugku的隐写杂项题:题目链接:https://ctf.bugku.com/challenges 1. 这道题下载后用wireshark打开...看了好久也没看出个所以然, ...

随机推荐

  1. Arch Linux 的休眠设置

    https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate_(简体中文)https://wiki.archl ...

  2. Ubuntu16.04中安装搜狗输入法

    1.从搜狗输入法官网界面下载安装包 https://pinyin.sogou.com/linux/ 2.安装 sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb ...

  3. 深入学习Motan系列(四)—— 客户端

    困惑的袋鼠,对框架的把握有些茫然,但是仍然一步步向前,行动总比一直迷茫停止不前要好,您说呢,各位客官? 这篇开始客户端的分析.有些地方的代码,就不每段都标出了,中间有跳跃的地方,请自己对照代码来看.鄙 ...

  4. exactly-once和kafka

    Exactly-Once的概念是指"恰好一次",简单讲就是同一个数据只会被处理一次,应用有机质保证不会重复处理同一条数据(如果数据因为因为网络业务异常被发送多次):Exactly- ...

  5. Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础

    六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...

  6. redis 延时任务 看一篇成高手系列2

    引言 在开发中,往往会遇到一些关于延时任务的需求.例如 生成订单30分钟未支付,则自动取消 生成订单60秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务.那么这里就会产生一 ...

  7. ubuntu10.04 32 编译android源码的问题

    ubuntu10.04 32 问题  没有jdk1.6     并且使用apt-get 安装jdk相当麻烦,参照:http://blog.csdn.net/godvmxi/article/detail ...

  8. VS2017调试出现异常浏览器直接关闭的解决办法

    最近升级完VS2017后,出现了各种不适应. 1.F5调试时总是会打开新的浏览器,过去都是在现有窗口右侧打开新的新的浏览器标签页. 这一点就让很不爽,勉强接受吧,继续调试代码但是还有第二种情况. 2. ...

  9. 对于使用JDBC连接mysql数据时The server time zone value '¤¤°ê¼Ð·Ç®É¶¡'...的异常问题解决。

    相信很多小伙伴和我一样遇到了这类问题,在使用JDBC连接mysql数据库的时候发生SQLException如下所示的异常情况! java.sql.SQLException: The server ti ...

  10. 学习笔记之Model selection and evaluation

    学习笔记之scikit-learn - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/9997485.html 3. Model selection ...