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. bilibili有电脑版吗_虚充制冷剂、谎称电脑版故障...空调维修的这些套路,你 中招了吗...
  2. 六大技巧提升员工信息安全意识
  3. 16行代码AC_蓝桥杯 2017年C组第三题 算式900(暴力解法+DFS解法)
  4. 福建省高职单招分数怎么计算机,2019福建高职单招切线 高职招考分数线是多少...
  5. 堕落小白的前台sql注入cms代码审计
  6. pycharm最左侧Tool Buttons显示不全的问题解决
  7. Web项目练习总结(错误校正篇)
  8. leetcode 1074. 元素和为目标值的子矩阵数量(map+前缀和)
  9. linux的基础知识——协议和网络应用程序设计模式
  10. Mysql学习总结(52)——最全面的MySQL 索引详解
  11. jupyter 写sql_了解适用于SQL Server的Jupyter Notebooks
  12. scala的三个排序方法
  13. leetcode - Best Time to Buy and Sell Stock Ⅱ
  14. html中的排名怎么写,html制作畅销书排行榜
  15. 在雨雾中穿行--张家界之旅786
  16. 农夫安全-安全网站导航 farmsec
  17. python中的成员运算符用于判断指定_Python中的成员运算符用于判断指定序列中是否包含某个值...
  18. piaget读法_这些手表品牌原来是这么念的!
  19. 模仿美团跑腿做的跑腿小程序
  20. 区块链龙头股都有哪些?区块链概念股有哪些?

热门文章

  1. iOS UILabel设置居上对齐,居中对齐,居下对齐
  2. [中级教程] 实例教程_次世代游戏场景刀枪武器架子3D模型制作教程
  3. sql复制表结构及内容
  4. 基于误差状态的卡尔曼滤波ESKF
  5. 培训机构真实落地方案,利用地摊一次招生247人,只用了3招!
  6. 天天学JAVA-JAVA资源分享(此文持续更新)
  7. java实现jpeg压缩_JPEG压缩实现问题
  8. 友情链接互换-乐晨博客官方网站诚邀
  9. faster R-CNN模型实现过程
  10. Java基础——进阶