xctf攻防世界——crackme writeup

Posted hongren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xctf攻防世界——crackme writeup相关的知识,希望对你有一定的参考价值。

感谢xctf提供学习平台

https://adworld.xctf.org.cn

技术图片

 

 crackme有壳,脱壳部分见文章:

https://www.cnblogs.com/hongren/p/12633232.html

查看字符串:

技术图片

 

 跟踪来到right,推测为成功时的标志。

来到这里,往上翻能看到核心代码以及输入和输出的指令

技术图片

 

 输入的字符串放在了[edp-38]这个位置。程序是先循环,判断了字符串长度

技术图片

 

eax作为计数器,最后与0x2A比较

 技术图片

 

 核心算法部分,主要是与“this_is_not_flag”异或,之后与402150位置比较,eax再次充当计数器,402150处数据位dword,4位,所以40108D处eax*4。

输入的字符串42位,但是给的异或只有16位,通过and操作解决

技术图片

 

 402150处数据, 改变显示方式:

技术图片

 

技术图片

 

 将这部分数据复制出,之后删除掉前边的地址,将“000000”替换位“,0x”再加上方括号,就可以直接编写python脚本使用。

最后附上整个注释分析图(右键查看可放大)和python代码

技术图片

 1 a=[0x12 ,0x04 ,0x08 ,0x14  
 2 ,0x24 ,0x5C ,0x4A ,0x3D  
 3 ,0x56 ,0x0A ,0x10 ,0x67  
 4 ,0x00 ,0x41 ,0x00 ,0x01  
 5 ,0x46 ,0x5A ,0x44 ,0x42  
 6 ,0x6E ,0x0C ,0x44 ,0x72  
 7 ,0x0C ,0x0D ,0x40 ,0x3E  
 8 ,0x4B ,0x5F ,0x02 ,0x01  
 9 ,0x4C ,0x5E ,0x5B ,0x17  
10 ,0x6E ,0x0C ,0x16 ,0x68  
11 ,0x5B ,0x12 ,0x00 ,0x00  ]
12 
13 b="this_is_not_flagthis_is_not_flagthis_is_no"
14 flag=""
15 for i in range(len(b)):
16     flag = flag+chr(ord(b[i])^a[i])
17 print(flag)


以上是关于xctf攻防世界——crackme writeup的主要内容,如果未能解决你的问题,请参考以下文章

CTF PWN-攻防世界XCTF新手区WriteUp

攻防世界--crackme

攻防世界 Reverse高手进阶区 3分题 crackme

攻防世界 Reverse高手进阶区 3分题 crackme

攻防世界 Reverse高手进阶区 3分题 crackme

攻防世界 Reverse高手进阶区 3分题 crackme