本帖最后由 小白670 于 2018-5-6 14:46 编辑
1.Bugkuctf easy_vb(用OD搜索字符串,得到明文flag)
2. Bugkuctf easy_re(flag不是明文,用函数传递值,strcmp比较)这里用了SSE2指令,这篇博客对存储指令有详细介绍,做题时直接百度不知道的函数就可以了https://blog.csdn.net/bwl111/article/details/8980449
3.南邮ctf Hello_re(flag以整数保存,以小端序存储的,反过来即可)
4.实验吧 justclick(反编译后可知根据顺序点击按钮得flag)
用PEID或者exeinfo可以发现是c#写的程序,这就需要用到一个新的工具,Reflector,用Reflector.exe打开要分析的程序,然后可以找到MainWindow,
在MainWindow里发现了如下函数,分析之后进入check发现只要每次点击的按钮和程序要求的顺序一致则成功
5.实验吧 证明自己吧(异或比较得flag)IDA分析,F5后可以看到程序逻辑清晰,函数对输入的字符串进行处理判断是否正确,关键是sub_401060
进入函数后可以看到加密过程,其中v5,v6,v7,v8,v9在地址上是挨着的,所以只需要把数据取出来然后逆向处理就能得到正确的输入,flag就是我们的输入
在程序中可以找到相应数据
然后写脚本处理数据,这里要注意,函数在处理时是以byte为单位的,取数据的时候要注意顺序,将第一个dword变成byte可以发现是小端序
脚本如下:
[Python] 纯文本查看 复制代码 v5=[104,87,25,72,80,110,88,120,84,106,25,88,94,6]
#倒过来处理
#先减5,再异或0x20
str1=""
for i in range(14):
v5[i]-=5
v5[i]^=0x20
str1+=chr(v5[i])
print str1
6.实验吧 该题不简单 (根据用户名生成flag,strcmp比较) 用ida分析,shift+F12,找关键字符串,找到后找到引用,发现了关键函数
可以得知是根据sub_4011D0判断是否正确,进入函数分析
对了,题目还有提示
所以只要将hello进行处理,然后在前面加上Happy@就是最终的flag了脚本如下:
[Python] 纯文本查看 复制代码 username="hello"
str2=""
for i in range(len(username)):
str2+=chr((i+i*ord(username[i])*ord(username[i]))%0x42 +33)
print "Happy@"+str2
入门级总结:
入门级的逆向题,大多数程序的逻辑清晰,能很快定位到关键函数,并且加密算法既验证算法简单,刚开始学逆向的可以利用这些题目熟悉逆向工具的使用,难度不高但是可以保护新人平稳度过逆向刚开始艰难的入门期。
入门级题目一般在ctf训练平台上找,在ctf比赛中这种题目出现概率非常低。逆向入门题还是需要熟悉汇编的,所以没学过汇编的同学最好最好先去看书,然后在去做逆向题。如果入门级的题目觉得没有难度的,可以试着尝试一些更难的题。最后,希望想学习逆向的朋友都能体会到逆向的魅力!
最后谁能告诉我怎么去掉后面多出来的图片啊,我在编辑器里没有添加啊,而且也删除不了
已经把程序附件给传上来了
|