1、阿拉丁神灯http://ctf1.simplexue.com/crack/1/
这个比较简单,用ida加载后,函数列表里有Button1_click,点击进去后发现

这里有个比较函数,应该是输入的字符串和zhimakaimen@2011进行比较,在页面输入该密码,即可获得key
小明向灯神许愿道~ 灯神啊~ 给我过关的Key吧~ 灯神说道\KEY:UnPack&Crack2011!!

2、你知道注册码吗 http://ctf8.simplexue.com/crackme2/
属于crakeme,用吾爱破解打开后,调试运行,输入用户名处输入4个字符,点击注册,可弹出提示。此时调试暂停,选择查看->调用堆栈,找到用户程序段的堆栈,点击进去后,查看程序,发现有一个比较,若不相等则跳转。

在跳转位置101190位置F2设置断点,并观察ecx和eax的值
调试观察发现计算方法是用户名每个字符-8+位置顺序号
python代码为:
username=’syclover’
index=0
for c in username:
print chr(ord(c)-8+index)
index+=1
输出key: kr]gkscq

3、证明自己 http://ctf8.simplexue.com/crackme/
需要逆向的程序为命令行程序,无界面,结果相对简单。
用IDA打开,根据结构很快可看到整体结构,明显是输入个字符串,判断后返回正确还是错误。判断程序为401060地址开始程序。

进入401060,按F5转换为C程序,可看到原始字符进行异或0x20运算,系统匹配的字符串每个字符-5,再进行比较。进行程序调试,看到某个地方直接跳转结束,判断条件是比较。

在比较句上设置断点,调试后发现edx总为14,若exc不为14直接返回失败,所以输入的字符串长度应该是14个字符。下面loc_4010F7有对系统字符串做-5的运算,在保存运算后字符指令后设置断点,观察每次循环保存的数据,共循环14次。

14次循环得到的数据[0x63,0x52,0x14,0x43,0x4B,0x69,0x53,0x73,0x4F,0x65,0x14,0x53,0x59,0x1]
用python程序简单运算下即可得到
a=[0x63,0x52,0x14,0x43,0x4B,0x69,0x53,0x73,0x4F,0x65,0x14,0x53,0x59,0x1]
for i in a:
print chr(i^0x20),
结果是Cr4ckIsSoE4sy!
4、该题不简单 http://ctf1.simplexue.com/crack/3/
其实也挺简单的
使用IDA打开程序,找到处理函数,F5转换为C代码,很容易识别,算法是在输入的用户名上进行运算再加上”Happy@”即可,运算方法是:(i+i*char*char)%0x42+33
结果是Happy@!GA0U。
用吾爱破解也可以很容易判别,如下图

在比较处设置断点,右下角的数据段直接显示出计算的字符串和拼接的字符串,字符串连接后即为key。
5、此处无声,http://ctf1.simplexue.com/crack/5/
比较复杂,程序还加了壳,脱壳后调试发现是个算法加密,应该是用MD5,RC6加密,看了半天,算法太复杂,没研究出来,算了,回头逆向理解更深了再说。期待有高手分享经验。
计算方法是RC6Decry(MD5(‘nsfocus’))=Key,RC6的密钥是

6、Flag:http://ctf5.simplexue.com/qwctf/flag-checker.html

该题目给了个javascript,很长的计算公式,字符串长度必须为47位,且满足一面47个判断,其实判断都不复杂,大致推出a[0],再推a[1],一直到a[46],求得flag为flag{wh47_my5ter10us-do3s,the+phe45ant/c0nta1n}
使用脚本计算如下:

<script language="javascript">
ss="a[11]-a[5]%a[1]*a[12]%a[14]-a省略后面一大串";xx=ss.split('&&');function search(num)
{index=-1;for(i=0;i<xx.length;i++){dd=xx[i];offset=0;count=0do{offset=dd.indexOf('[',offset);if(offset != -1){count++;offset += 2;}}while(offset != -1)if(count==num){index=i;break;}}return index;
}var a = new Array();
a[0]=0;
for(k=0;k<47;k++)
{index=search(k+1);dd=xx[index];for(j=0;j<256;j++){a[k]=j;if(eval(dd))break;}
}jjj='';for(f=0;f<a.length;f++)
{jjj+=String.fromCharCode(a[f]);
}
document.write(jjj);
</script>

7、john the packer
题目地址:http://ctf5.simplexue.com/re/topack.html
题目来自意大利的PoliCTF,是linux程序脱壳逆向的,挺新颖。报着学习的态度,理解ELF脱壳逆向。
首先看看是什么文件:

xx@kali:~/Desktop$ file topack
topack: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0xe1b43c1c23bee1233aa04a727a30b2f08abe7bcb, stripped

是个32位的ELF执行程序,用IDA打开,入口点下翻翻发现:

.text:08048633                 push    eax
.text:08048634                 mov     edx, [edx]
.text:08048636
.text:08048636 loc_8048636:     ; CODE XREF:sub_80485E0+5Cj
.text:08048636                 xor     [eax], edx
.text:08048638                 add     eax, 4
.text:0804863B                 dec     ecx
.text:0804863C                 jnz     short loc_8048636
.text:0804863E                 pop     eax
.text:0804863F                 call    eax
.text:08048641                 sub     esp, 8
.text:08048644                 push    [ebp+arg_4]
.text:08048647                 push    [ebp+arg_0]
.text:0804864A                 call    sub_804859B

程序有调用call eax的操作,脱壳就是要抓取eax对应的内存。再看调用结束后的函数sub_804859B,代码有:

.text:080485D3 loc_80485D3:       ; CODE XREF: sub_804859B+3Ej
.text:080485D3                 xor     [ebx], edx
.text:080485D5                 add     ebx, 4
.text:080485D8                 dec     ecx
.text:080485D9                 jnz     short loc_80485D3

算了,没耐心写了,参考https://github.com/dqi/ctf_writeup/tree/master/2015/polictf/reversing/john%20the%20packer吧
8、Keylead(ASIS 2015)
file查看keylead文件是个7z文件,解压指令:

unxz -d -f keylead -c > keylead1

file keylead1发现是个64位ELF文件,IDA64打开,发现sub_400E6E是main函数,查看c代码可看到就是随机数去判断,需要强制更改跳转,一直跳到flag产生处。还可以在函数入口地直接修改地址跳转到产生flag的函数。在函数入口附近找到:
04005DD mov rdi, offset sub_400E6E //跳到主函数
将对应地址修改为flag函数sub_4006B6,用winhex修改保存后为
04005DD mov rdi, offset sub_4006B6
在linux中直接直接执行得到flag。
9、bin100(ebCTF2013)
其实同上面说的第8题,程序随机产生一系列随机数,满足3,1,3,3,7的顺序,因此修改跳转即可。
找到winmain函数,用OD调试,强制修改每次判断的eax值为3,1,3,3,7,但输出的flag为乱码。后查询发现时间等待作为参数产生flag,因此需要程序自动完成,不要进行调试。因此nop掉所有的je,类似这样,一共5处。

产生flag的函数前有一个eax与-1比较的判断,把下面的跳转指令nop掉。共6处修改。
用od的菜单–>二进制–>nop填充,应用全部修改,保存到新文件,执行即可得到flag

西普部分CTF题目(逆向)相关推荐

  1. 1.实验吧_ropbaby(西普杯CTF)_onegadget

    分析 1.先查看文件位数,安全机制 2.查看strings,调用函数(特别注意常见的函数) 漏洞点 EXP from pwn import * context.log_level = "de ...

  2. 西普学院逆向writeup ---------你会吗??

    西普学院逆向writeup ---------你会吗?? --------跳跳龙 明天我们学校就要ctf比赛,深夜前10几分钟正好解了一道逆向题,是西普学院的,昨天,在小强的提醒下,也解了一道,今天就 ...

  3. 安卓逆向从入门到嗝屁之另一道CTF题目

    小伙伴发了一道安卓的CTF题目,有空就看了下: 首先,这次就先不装了,开个模拟器卡的一P,androidkiller.gda等无法打开,jeb正常打开(当然dex2jar打开dex文件,再用jd-gu ...

  4. CTF题目难度等级划分

    CTF题目难度等级(1-10): 难度等级 描述 用途 例子 最大分值 1 赛题的考点是非常常见的,选手们对于此类赛题可以直接进行解题步骤,并且在较短的时间内得到正确答案.该难度下通常不需要利用额外的 ...

  5. 既往出现中性粒细胞减少的患者可以重新应用依那西普

    原文 译文 Clin Rheumatol. 2011 Aug 5. [Epub ahead of print] Re-challenge with Etanercept in patients wit ...

  6. 炎症标记物辅助评估银屑病活动度以及依那西普疗效

    原文 译文 Clin Exp Dermatol. 2011 Jul 25. doi: 10.1111/j.1365-2230.2011.04131.x. [Epub ahead of print] T ...

  7. ACR2010_依那西普改善RA患者骨代谢

    研究显示与对照组相比,RA患者血清CTX和硬骨素水平较低,这提示骨吸收速度较慢,以及骨生成较慢.依那西普治疗后,骨转换标记物升高,炎性指标下降.因此我们认为依那西普在抑制炎症的同时,能刺激RA患者降低 ...

  8. 比较常规治疗登记中阿巴西谱、阿达木单抗、依那西普和英夫利昔单抗治疗类风湿关节炎的疗效和起效时间...

    原文 译文 Comparative Effectiveness and Time to Response Among Abatacept, Adalimumab, Etanercept and Inf ...

  9. [网络安全自学篇] 三十一.文件上传之Upload-labs靶场及CTF题目01-10(四)

    这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了编辑器漏洞和IIS高版本文件上传漏洞,包括FCKeditor.eWeb ...

最新文章

  1. ubuntu18.04.4 获取当前文件路径
  2. 大脑活动与认知: 热力学与信息论的联系
  3. 新手关于import/export的理解
  4. 53. Leetcode 112. 路径总和 (二叉树-二叉树路径和)
  5. canvas-a13prototype.html
  6. *【ZOJ - 3781】Paint the Grid Reloaded(dfs求连通块缩点,bfs求最短路,建图技巧)
  7. 图片 过度曝光_解读:摄影初学者,如何理性处理“曝光不足”与“曝光过度”...
  8. 服务器迁移中心 SMC 最佳实践及新特性介绍
  9. 关于Java堆栈的理解与说明
  10. 收藏个网站招聘内容。
  11. 大会回顾丨游戏用户体验优化如何实践,看大咖怎么说(附PPT下载)
  12. 康考迪亚大学 计算机科学,康考迪亚大学 Concordia University
  13. ArcEngine编辑模块——移动单个要素的实现方法
  14. win7系统(32位)安装CAD2004的方法
  15. 黑马程序员-我的入学笔记1-关于C#.net基础
  16. 前程无忧将办海外留学生招聘会;中兴任命倪飞为终端事业部总裁 | 美通企业日报...
  17. 计算机找不到def,我打开计算机,发现缺少def驱动器. C盘发生了什么?如何解决def驱动器消失的问题?...
  18. windows查看tomcat连接数_Springboot内置Tomcat线程数优化
  19. Mysql开启外网访问
  20. 【Proteus仿真】利用加法计数器74XX160的级联实现2位计数

热门文章

  1. UFS 11 - UFS RPMB分区功能验证
  2. UITextView文本居上显示
  3. RDD-Partion简述
  4. 设计模式之建造者模式(C++)
  5. 微信热词悄然上线 热门事件尽收眼底
  6. 并发与并行,同步和异步,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang并发编程之GoroutineEP13
  7. linux系统安装WI-FI驱动
  8. OpenIM:如何打造安全可靠的即时通讯服务
  9. graphSage还是HAN ?吐血力作综述Graph Embeding 经典好文
  10. java开源的规则引擎_Java常用的规则引擎