2019DDCTF部分Writeup
……
re
Windows Reverse1
通过DIE查壳发现存在upx,在linux上upx -d脱壳即可,拖入IDA,通过关键字符串找到关键函数:
main函数中也没有什么,将输入的字符串带到sub_401000函数去处理,之后和处理过后的字符串和正确字符串进行比较,若一致则是正确flag
跟进sub_401000,首先计算了输出字符串的长度,然后根据每一个字符的ascii码再加上一个常量作为地址,取里面的值,循环,每一位都是这样
在main函数中我们知道正确的字符串,那么我们就可以反推处flag
exp:
1 |
data = [0x403052,0x403052,0x403053,0x403042,0x403050,0x40301B,0x403024,0x403031,0x403020,0x403031,0x403024,0x403023,0x403031,0x403049,0x403051,0x403019] |
flag:DDCTF{ZZ[JX#,9(9,+9QY!}
Windows Reverse2
查壳发现是ASPack壳,我用工具脱没脱下来,只好手动脱,根据栈平衡可以顺利找到eop,然后从内存中dump下来,载入IDA中,找到关键函数:
sub_4011F0函数验证了用户输出的合法性,然后再经过sub_401240和sub_401C6A处理,再和正确字符串相比较
验证合法性的函数很简单,限制了0-9,A-F
接下来看数据处理函数,静态分析后也没明白是干什么的,通过交叉引用函数,发现sub_401000存在base64算法,但是这道题把索引表给隐藏起来了,题目所提供的索引表和0x76异或之后构成base64的索引表
动态调试的时候,我们输入123456789A的时候,发现sub_401000返回了一串字符串:
更加确定这个是base64加密了,解密发现,这个题目是将我门输入的字符串直接转成了数据
1 |
import base64 |
所以我们直接将正确字符串base64解密即可得到flag:
1 |
import base64 |
flag:DDCTF{ADEBDEAEC7BE}
Confused
这道题一开始我没看出来,后来kaller师傅给我了一个提示:VM 虚拟机
再反过来头看程序,恍然大悟
首先题目是一个app,应该是在MacOS上的app,这是我第一次做,边百度边做
在MacOS中发现一个可执行文件,xia0Crackme
1 |
➜ MacOS file xia0Crackme |
拖入IDA查找字符串来定位关键函数:
main函数中,大致过程就是先对输入的字符串进行格式上的验证,长度上限制是18,然后进入到sub_1000011D0进行处理,若返回值等于1,则是正确的flag
在sub_1000011D0函数中首先初始化了一个区域v2
sub_100001f60是通过输入的字符串和内存数据对v2进行赋值操作
前段是对v2进行赋值,最后将输入的字符串拷贝到qword_100003F58+48的位置
sub_100001F00函数对(*v2+24)进行了赋值,把一段数据赋给了它,接着是一个循环,判断条件就是刚刚赋值的数据是不是等于“0xf3”,
然后进入sub_100001E50,这个函数一开始我还没看出来是什么意思,后来发现这是一个VM类型的题,,这个函数的作用是控制程序执行的vm的分支
各个分支的函数我这里就不再详细讲解
数据:
1 |
0xf0,0x10,0x66,0x0,0x0,0x0, |
总共是两中处理方式
exp:
1 |
data = [0x66,0x63,0x6a,0x6a,0x6d,0x57,0x6d,0x73,0x45,0x6d,0x72,0x52,0x66,0x63,0x44,0x6a,0x79,0x65] |
flag:DDCTF{helloYouGotTheFlag}
pwn
[PWN] strike
这个相对来说是比较简单的,设计到的只有栈溢出,但是这个栈溢出有点和之前的不一样
第一处漏洞点
fprintf处存在泄露栈地址
第二处漏洞点
通过负数来绕过对password输入长度的限制
第三处漏洞点
在读入password时可造成栈溢出
但是在栈溢出的时候ECX不能变,需要把ECX的值计算出来填充到我们的payload中
exp:
1 |
from pwn import * |
flag:DDCTF{s0_3asy_St4ck0verfl0w_r1ght?}
2019DDCTF部分Writeup的更多相关文章
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- ISCC2016 WriteUp
日期: 2016-05-01~ 注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上.刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面. 这是第一次做类似于CTF的题,在 ...
- 参加 Tokyo Westerns / MMA CTF 2nd 2016 经验与感悟 TWCTF 2016 WriteUp
洒家近期参加了 Tokyo Westerns / MMA CTF 2nd 2016(TWCTF) 比赛,不得不说国际赛的玩法比国内赛更有玩头,有的题给洒家一种一看就知道怎么做,但是做出来还需要洒家拍一 ...
- 爱春秋之戏说春秋 Writeup
爱春秋之戏说春秋 Writeup 第一关 图穷匕见 这一关关键是给了一个图片,将图片下载到本地后,打开以及查看属性均无任何发现,尝试把图片转换为.txt格式.在文本的最后发现这样一串有规律的代码: 形 ...
- 《安全智库》:48H急速夺旗大战通关writeup(通关策略)
作者:ByStudent 题目名字 题目分值 地址 MallBuilder2 350 mall.anquanbao.com.cn MallBuilder1 200 mall.anquanbao.c ...
- iscc2016 pwn部分writeup
一.pwn1 简单的32位栈溢出,定位溢出点后即可写exp gdb-peda$ r Starting program: /usr/iscc/pwn1 C'mon pwn me : AAA%AAsAAB ...
- We Chall-Training: Encodings I -Writeup
MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...
- We Chall-Encodings: URL -Writeup
MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...
- We Chall-Training: ASCII—Writeup
MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...
随机推荐
- 洛谷 P2622 关灯问题II【状压DP】
传送门:https://www.luogu.org/problemnew/show/P2622 题面: 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的 ...
- MQ消息队列的12点核心原理总结
1. 消息生产者.消息者.队列 消息生产者Producer:发送消息到消息队列. 消息消费者Consumer:从消息队列接收消息. Broker:概念来自与Apache ActiveMQ,指MQ的服务 ...
- 前端之BOM与DOM-JQuery
一.前端基础之BOM和DOM: 1: JavaScript分为 ECMAScript,DOM,BOM BOM:指的是浏览器对象模型,它使JavaScript有能力与浏览器进行“对话” DOM:是指文档 ...
- 与http协作的web服务器
1.虚拟主机 一台web服务器可以搭建多个独立域名的web网站,也可以作为通信线路上的中转服务器提升传输效率.比如web托管服务供应商可以用一台服务器为多个不同域名的客户提供服务,这是利用了虚拟主机( ...
- vue中axios的post请求使用form表单格式发送数据
vue使用插件qs实现 (qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库.) 在jquery中的ajax的方法已将此封装,所以不需要再次序列化 1. 安装 在项目中使用命令行工具输 ...
- 邪恶的csrf
关于csrf是啥我就不多说了 进入正文 场景模拟 场景一 在一个bbs社区里,用户在发言的时候会发出一个这样的GET请求: #!html GET /talk.php?msg=hello HTTP/1. ...
- Nginx的下载与安装
.创建文件输入网页中需要复制的 cat >/etc/yum.repos.d/nginx.repo<<EOF [nginx-stable] name=nginx stable repo ...
- EXAM-2018-7-29
EXAM-2018-7-29 未完成 [ ] H [ ] A D 莫名TLE 不在循环里写strlen()就行了 F 相减特判 水题 J 模拟一下就可以发现规律,o(n) K 每个数加一减一不变,用m ...
- 学习python-20191108(2)REST接口相关
一.客户登录验证 在使用接口前,需要对客户进行登录验证 enums.py文件代码: #定义枚举,客户端登录的方式有很多种形式:邮箱登录.手机登录.微信小程序登录.微信公众号登录 class Clien ...
- 前端-bootstrap-长期维护
############### bootstrap简介 ################ Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. ...