发表于 2016-8-12 17:47

申请会员ID:giantbranch【申请通过】

1、申 请 I D : giantbranch                  2、个人邮箱:493254599@qq.com
3、原创技术文章:   



blog地址:http://blog.csdn.net/u012763794?viewmode=contents
通过博客可以看到,其实我一开始是搞web安全的,上面可以看到,发现最终还是要逆向,脱壳什么的,而且有挑战性,只是学了逆向的东西,最近在学python灰帽,希望能来吾爱学习,进一步提高,文章技术含量不高,望通过


合天网安实验室CTF练习赛之逆向题之RE100,RE200
我的博客原文:http://blog.csdn.net/u012763794/article/details/51737802
最近搞逆向,就做做CTF题吧
挑战地址:http://www.hetianlab.com/CTFrace.html对linux的逆向还没深入学习,所以re300暂时空着
逆向100先把后缀改为.apk吧

安装看看吧,
输入密码,随便输入,点击Enter没任何反应,应该是输入正确后才会有提示flag什么的

http://img.blog.csdn.net/20160622232125351?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


那我们反编译看看
http://img.blog.csdn.net/20160622232413633?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


反编译就看到明文比较了
http://img.blog.csdn.net/20160622232545462?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


输入后直接出flag了
http://img.blog.csdn.net/20160622233158130?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center



逆向200
打开看看,应该是先输入第一个password,正确了才让你输入第二个password,第一个错误了就直接退出了
查壳没有加壳
http://img.blog.csdn.net/20160622233709248?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

那我们下一个退出断点,其实下一个strcmp断点更快
http://img.blog.csdn.net/20160622234927926?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

从反汇编跟随就可以找到用户领空的退出代码,ctrl+a分析一下,发现有个跳转跳过来,直接跟过去,
http://img.blog.csdn.net/20160622234941812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

下个断点,跟进去
http://img.blog.csdn.net/20160622235044439?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

一直f8,都可以看到真的password了
http://img.blog.csdn.net/20160622235110611?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

测试一下,确实是
http://img.blog.csdn.net/20160622235205081?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


当然借助一下ida,就更加容易看到了

http://img.blog.csdn.net/20160623004056087?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


看看过了level1后又会怎样

http://img.blog.csdn.net/20160623004153694?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


发现这个应该是反调试的
http://img.blog.csdn.net/20160623092926721?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


下面从某处复制的
新增的AddVectoredExceptionHandler 这个API将一个指向函数的指针作为参数,把这个函数的地址添加到已注册的异常处理程序链表中。

那么这里的int3异常会交给异常处理程序链表中第一个处理函数处理,假如调试器处理这个异常,我们就到不了那里了,所以od的设置一定要忽略所以异常,让程序或系统自己处理

具体是在哪设置的呢,其实这里不用知道也可以,知道就更好了,如下图,可以直接去到40157f,删除一下分析就可以看到代码了

http://img.blog.csdn.net/20160623094025156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


不知道这个怎么办呢,我们可以用退出函数断点啊,也可以根据堆栈的反汇编跟随到达password2的代码

http://img.blog.csdn.net/20160623094547211?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


那么401547的代码肯定是关键了,f7跟进,我们可以看到作者设定的常量了

http://img.blog.csdn.net/20160623094639306?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


那么接下来做了什么呢,首先判断是否到达字符串的结尾,这里作者设定的是二进制的02为结尾

http://img.blog.csdn.net/20160623094900231?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


那么具体的算法下面已注射的比较清楚了

http://img.blog.csdn.net/20160623094828262?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


当然也可以借助ida,不过通过汇编看学得更多哦

http://img.blog.csdn.net/20160623095305669?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


弄懂这个简单的算法后,我们可以把je改为jmp

http://img.blog.csdn.net/20160623095028480?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


直接在cmp处下断点,不断f9,记下al中的每个字母,password2就出来了

http://img.blog.csdn.net/20160623095114203?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


成功

http://img.blog.csdn.net/20160623095226877?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


当然也可以写个脚本

http://img.blog.csdn.net/20160623095327832?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


最终flag: r0b0RUlez!_w3lld0ne



Hmily 发表于 2016-8-16 10:03

过程比较简单,但也算原创内容了,请在博客发篇内容证明是本人申请吧。

发表于 2016-8-18 20:39

Hmily 发表于 2016-8-16 10:03
过程比较简单,但也算原创内容了,请在博客发篇内容证明是本人申请吧。

已发文章,而且置顶了,谢谢Hmily哥

Hmily 发表于 2016-8-19 10:12

ID:giantbranch
邮箱:493254599@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登录后把文章整理后发布到脱壳破解区吧。

giantbranch 发表于 2016-8-19 14:31

本帖最后由 giantbranch 于 2016-8-19 21:42 编辑

我来报道啦{:1_887:}, 想问一下,两三个星期没登陆会删号吗
页: [1]
查看完整版本: 申请会员ID:giantbranch【申请通过】