您现在的位置: Tracy‘Blog > 博客 > 一些破文 > 正文
第二届360网络攻防大赛总结及re部分writeup

两天完了,昏昏呼呼的,貌似没有蛮大感觉。也说不出个所以然,就想那天做的那个梦差不多吧,各种想使上劲,可却发现各种使不上力。于是乎,第二天的比赛就是那梦的诠释。

先来总结一番,再细谈reverse的五个题目吧。

我也不清楚我们当时到底是懂了比赛规则还是没懂,或者说,没有完全懂吧。以为是分数高的队伍点开的题目,大家才能做,所以,第一天一整场,我们都压根没怎么去看web,从而让了队伍中的web牛过客同志无所适从~后来才知道,我们点开的下一层的题目是别的队伍想做同一层次题目的关卡。于是,浪费了一好些机会,算是一个教训,以后,还是先弄懂规则。不过,从一开始就一直往逆向开,估计还是给其他队伍造成了不少的麻烦。于是,第一天,得了380,居榜首。

 

第二天就几乎是噩梦了。怎么说呢,手速变慢了,或者说,渗透经验不足吧,整个一天都没得分,跑了一天的wpa,结果密码就写在了网页上,好不容易找到了突破口,可都被别人捷足先等了。于是,还是380。不过,有收获的就是,找到了不足,至少,比赛过程中,又回到了以前一台台电脑,每个端口都测试的气氛,感觉还是不错,慢慢的学习msf。虽说,多数的是网站的,拿着nmap和msf使不上什么劲,不过,我庆幸尝试了一天。

 

最重要的是,这次比赛又是一次和小伙伴的磨合,挺开心的。


好吧,不多唠叨了。技术不过硬,这是摆在眼前的,好好加油吧~期待11111010越来越好!



开始writeup吧。

一开始比赛,立马点开RE1,不到两分钟,提交key,拿下一血:

Re1:

一个crackme,随意输入个key,点确定。

直接拖到c32asm,查找字符串,网上翻,找到下面内容.

一看就知道什么情况了吧.004014E4那里,明显一个JNZ.OD加载,Ctrl+G定位到004014E4.然后看了下,发现,这上面一段代码是明显的单字节判断的地方.

CPU Disasm
Address   Hex dump          Command                                  Comments
004014B5  |> /8A10          /MOV     DL,BYTE PTR DS:[EAX]
004014B7  |. |8ACA          |MOV     CL,DL
004014B9  |. |3A16          |CMP     DL,BYTE PTR DS:[ESI]
004014BB  |. |75 1C         |JNE     SHORT CrackMe.004014D9
004014BD  |. |84C9          |TEST    CL,CL
004014BF  |. |74 14         |JZ      SHORT CrackMe.004014D5
004014C1  |. |8A50 01       |MOV     DL,BYTE PTR DS:[EAX+1]
004014C4  |. |8ACA          |MOV     CL,DL
004014C6  |. |3A56 01       |CMP     DL,BYTE PTR DS:[ESI+1]
004014C9  |. |75 0E         |JNE     SHORT CrackMe.004014D9
004014CB  |. |83C0 02       |ADD     EAX,2
004014CE  |. |83C6 02       |ADD     ESI,2
004014D1  |. |84C9          |TEST    CL,CL
004014D3  |.^\75 E0         \JNZ     SHORT CrackMe.004014B5

找到第一条,004014B5处下断点.然后F9运行,随意输入一个key,确定.后面的就不说了吧:

 

提交,拿下十分。然后队友也紧接着把web10搞定。立马打开re2.


Re2:

提示一个有问题的程序,不能运行,必须修复好程序才行。

直接双击,弹出

 

貌似要在命令行下完。

拖到ida里看了看。

先shift+F12吧,貌似没发现什么有用的信息:

庆幸的是,没几个函数:

 

定位到start,看了看,觉得4011BC太复杂,不想去分析,就直接把它当做是取参数的函数了。有参数了后做了什么呢?F5看了下:

 

还算好理解,先打开文件,然后读文件,然后处理,再复制,接着是要写文件的。看到了.db,附件中有一个pass.db,这个肯定是要被read的。

不管了,od加载这个文件,设定参数为pass.db。下断点到读文件的地方吧,先看他能不能执行过来。

发现,断下了。可,以外的发现了个问题。

这个buffer居然是空指针.难怪会异常。

 

那,随意给他指一个地方吧,反正文件也不大,就用旁边的00403020吧。于是,Ctrl+E改掉buffer的值。

再继续F8,到

异常,然后,把ESI的地址改为刚才读取的buffer。

然后你就在刚才的地方得到了key

 

坑爹的题目中说的是,修复好了后,执行两次,你会得到key。尼玛,IDA中F5一看,各种亦或操作,你执行两次有几个意思呢?

然后,有四十分的基础,立马开R3.

 

R3:

这题的提示是,exe是一个被病毒感染过的文件,需要手动修复,修复好了后,运行会弹出key。记得,是会弹出key。

尼玛,运行是必须运行不了的。无奈的拖到ida中。胡乱翻了下,没找到啥。然后,od加载,来到入口点。

开头就一个跳转,也没细看,总是模模糊糊的感觉以前见过入口是跳转的,比如VB、BC++,于是也就没有太在意了,直接跟了过去,               

开始还正常,后面就乱码了.复制地址进ida看了下:

key no,嘿嘿,开心啊,不过,这显然是障眼法。提交,不正确。

然后呢,看了下这几个push和call,根据题目一次,不是说,弹出key么?messagebox么?然后,发现参数也刚好是的。

就想着,肯定是要修复输入表了。很久没脱壳,没有玩修复了。这,怎么整。半天无脑乱碰后,去看了看其他的题目,这会儿,我们的分数开始反超了。有80分的队伍出现。然后,转了一圈,发现没有结果后,再回来看这题目,顺着ida往下拉,发现了一串可疑的字符串。

随手试了下,尼玛还真是key~艹,不能再坑啊~~~

不过,幸好这题目不是把sendmessage过去的明文算一次得到key,不然,还真指不定能在比赛的时候做出来呢。

回来后,今天再看了看,队友跟别人交流后,给了句:其实就是nop掉jmp,然后再改改。

立马od加载一次,

CPU Disasm
Address   Hex dump          Command                                  Comments
0040CE4C   .  FF15 68F34300 CALL    NEAR DWORD PTR DS:[<&KERNEL32.Ge ; [KERNEL32.GetVersion CPU Disasm Address Hex dump Command Comments 0040CEAC . FF15 4CF24300 CALL NEAR DWORD PTR DS:[<&KERNEL32.Ge ; [KERNEL32.GetCommandLineA CPU Disasm Address Hex dump Command Comments 0040CED7 . FF15 50F24300 CALL NEAR DWORD PTR DS:[<&KERNEL32.Ge ; \KERNEL32.GetStartupInfoA 


这不就是VC++的入口点么?

然后,nop掉jmp后,弹出了key

是的,尼玛真弹出了~~擦,MessageBox那才叫弹出吧~~~不能再坑啊~于是,我们又回到了第一,立马开R4。


R4:

一个程序是用来往图片中写入隐藏信息的,也就是相当于LSB之类的。然后,提示中明确了,解密要用的信息在压缩包中,图片中肯定有key:

挺漂亮的图片。还有一串数字,嘿嘿,无视掉。其实,看到这图片挺开心的,终于来了一次隐写了,好开心好开心,然后,拿着Stegsolve看了半天,结果,没看出啥,然后,对每个颜色的低1位、2位,等等各种组合都提取了一次信息,无果。再然后,自己用张小图片,用提供的程序往里面隐藏数字1,再和原图片二进制对比,看了半天,还是无果。之后,总觉得这程序在哪见过,界面如下:

然后去pudn一顿搜,一顿下载,发现,还是不对。折腾了两三个小时,都快要哭了,然后,队友说,人家是逆向题,你还是老老实实逆向算法去吧。晴空一个霹雳啊,尼玛。逆向题,然后,用pexplorer看了下界面,没有发现隐藏的控件。

然后,丢到C32asm中去看字符串。

发现了个疑点,这尼玛什么个情况,居然有“提取信息完毕!”,然后回想题目中那句,解密功能也在程序里。顿时哭了,谁要我自作聪明去玩隐写呢?

然后,就定位到“提取信息完毕”的地方,拖到ida中,定位,然后一直往上翻,到上面有一个retn的地方。

停下,然后再同样的方法去“隐藏信息完毕!”的地方往上找。发现代码几乎一样。

记下这两个地址,解决思路是,猜这两个地方就是按键按下后跳转并执行的地方,那么,没有提取信息的按钮怎么办?自己弄一个上去,或者是,控制程序走向,显然,者更容易实现。于是,有什么办法呢?改004017A0处,改为什么呢?就jmp 00401c00吧。汇编代码就是:E9 5B 04 00 00.当时比赛用的是od2.0,貌似不能直接写jmp 00401C00,然后自己用E9 算了半天又不对,只能很无奈的,把这个地方改了个FF E0,就是jmp eax,然后在这里下断点,点下按键后,就断下,然后手动改eax的值为00401C00。

改完后,00401C00处下断点,然后,等下还要调试。因为你不知道哪个框是图片哪个是文本。

其实可以看C32asm里面的字符串,你就知道哪段是图片,哪段是文本了。

我们用pexplorer把,那两个小的txt控件,拉开,如图:

记得,然后点开始隐藏。

C32asm里面看到处00401C44是“打开含有信息的图片出错”,所以,得到

这里应该是c:\1.bmp了,也就是,第二个框框里是图片。

这里可以手动调一下,之后,弹出对话框,提示解密成功。

然后打开txt得到key如下:

B0ACD1BDA3FD1CD6

然后,我们再来处理一下这个程序吧,用pexplorer,打造一个专门解密的。

如图:

到这里的时候,是下午3点,我们拿下了230分了,再然后不到30分钟内,取证的40和80也搞定了,分数到达370。之后,就是恶心的Re5了。


R5:

额,大概原理也知道,程序访问127.0.0.1的exploit.html然后,然后把exploit.html复制到自己开辟的空间,这里因为大小问题造成了溢出。题目的考点就是修复好这个exploit.html就可以得到key。

这个exploit.html的作用其实就是用同样的方法,访问127.0.0.01/shell.dat,然后用shell.dat中的数据来计算得到key。

由于,还没整出来,所以,暂时先不写这篇的。弄出来了再详细分析吧。

 

给出题目连接吧:
http://pan.baidu.com/s/1ntJm7Dv

 

——Tracy_梓朋

2014年5月27日15:32:01

 

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’