XDCTF2014 Writeup
Web50
猜谜语类题目?FLAG在图片中有一些字符的 ASCii值,拼起来就是FLAG。
Web100
隐写术。使用工具 StegSolve,把任一颜色的bit0拼起来图片的最开始部分即为 flag。
Web150
题目给了一个使用不可见字符强力混淆过的一个 shell.php 文件,常见文本编辑器修改之后,原
代码就不能执行了。
因此使用 16 进制编辑器打开,在中间插入一个函数
er($s) { echo $s; return $s; }
然后后面需要打印变量的时候,就插入这个函数即可。
经过尝试,发现中间的几个带中间数字变量的实际上是类似如下的表达式, XX 和 YY 都太长,
代替表示一下。
preg_replace(“/XXXXXXXXXXX/e”, “eval(YYYYYYYYYYYYYY)”)
将 eval 替换成上面的 er 函数,于是打印出了源代码,可以看出是著名的 b374k 代码修改而成
的。
在里面发现了多个密码,其中有一行是
$smtppass = "XDSE@L0VEr2014";
将这个密码提交,成功得分。
Web200
一个娱乐性质的代码审计,每次随机出来两行,半看半猜大概知道了一点,然后拿下一血~
Web180
社工题,用户名可以在代码里找到,然后通过 qq空间发现残缺的身份证一角和生日信息,住址
信息,需要稍微爆破一下西安的地区代码:
Web250
XSS题,直接贴利用代码:
[svg][Script]w;i;n;d;o;w;.;l;o;c;a;t;&#
105;o;n; ;=; ;';h;t;t;p;:;/;/;c;&
#116;f;.;z;j;u;i;s;a;.;o;r;g;/;&#
39; ;+; ;d;o;c;u;m;e;n;t;.;c;o;
o;k;i;e;[/Script]
Web270[1]
Flag在数据库中,用burpsuite辅助脱裤之后cat * | grep flag
Web270[2]
flag在web旁站根目录:
Exploit100
程序中包含异常处理 ,HTTP GET请求的路径会覆盖 SEH结构,因此通过覆盖SEH Handler的方式
来利用.SEH结构往后只能覆盖 16字节,因此考虑将shellcode放在前面,然后在nextSEH处 使用
jump 99来跳转到最开头,覆盖后的SEH handler指向程序本身的gadget:pop pop ret 。
Exploit200
简单逆向了下 ,一个bug是popen处可以命令注入
直接nc连接反弹shell
Exploit600
1.login
需要发送:
0x10 + len(user) + len(password)
0x10 + user + ‘:’ + password
之后有一个函数会 check帐号密码,根据帐号逐位映射出密码
这里给出一组:LeoC + gAMU
之后有0x10,0x11,0x20,0x21,0x30,0x31 几个select
0x10和0x11无用
0x20可以覆盖(dword_40DA40 + 66) 这个函数
0x21可以利用send发送并在读到 (dword_40DA40 + 66) , 获得程序运行基址
0x30中可以将VirtualProtect的地址写到.data:0040DA3C
但是前提是能读到文件 ,可以先调用(dword_40DA40 + 66) 这个函数写文件,然后用0x30分支读文
件
0x31可以在利用0x20覆盖 dword_40DA40 + 66 之后trigger
Workflow:
1.login
2.用0x20覆盖264个字节,之后用0x21读 (dword_40DA40 + 66) 函数地址,减去偏移获得程序运行
基址
3.用0x20设置写的文件名,用0x31触发 (dword_40DA40 + 66) 原始函数写文件,用0x30读文件,使得
进入分支,load dll并将virtualprotect地址写入.data:0040DA3C
4.利用0x20覆盖 (dword_40DA40 + 66), 将地址覆盖为一个 stack pivot的gadget
5.利用0x31触发,将payload写到第二个参数中 ,这样触发stack pivot后整个payload就写入栈中
6.payload中构造了一个rop chain,调用virtualprotect赋予执行权限,读取shellcode并执行
Crack100
使用工具.Net reflector解混淆+反编译.net程序,分析逻辑发现一个 ASCII字符会被encode为一个
UTF8 字符,通过包含全部字符的输入文件获得映射表,反查出映射前的字符串。再根据提示
长度44再对后边的字符做 base64及异或得到最终答案。
Crack120
压缩包中包含一个编码过的文件和一个 pyc文件。对pyc文件分析可知编码的方法,写出反向逻
辑求解即可得到一张图片文件,从中可看到 flag。
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/usr/bin/env python2 import sys ans = '' f = open ( 'data' ).read() for c in f: bit = '1' if ( ord (c) >> 7 ) else '0' count = ord (c) & 0x7f ans + = bit * count ret = '' for i in xrange ( 0 , len (ans), 8 ): ret + = chr ( int (ans[i:i + 8 ][:: - 1 ], 2 )) sys.stdout.write(ret) |
crack180(MIPS)
使用qemumips打开调试模式运行程序,再 gdb连接上。在0x00400ce0处下断点修改$fp+24进
入特权模式。在程序中输入 showconfig可以看到The key is :
BFCBACACARDRHRHHDRDTCDDG 。再在0x401190处下断点临时修改 v0跳过检查,在程序
中输入前面看到的编码过的 key即可拿到flag。
Crack150
首先逆向dex文件找到用户名密码登录,进入之后小黑说你知道 "XX神器"么。猜测flag和XX神器
有关,百度了一下没发现什么线索。随后发现 asset文件夹里有个可疑的图片。 xxd后发现里面
包含一个dex文件。提取出来以后却发现无法反编译。但是可以获取 dex中所有string的字符串。
其中一个字符串写到: flag是"key"的小写16位md5。用md5sum一下"key"字符串,就得到了最
后的flag。
Crack180
google之...
A = aaaaa B = aaaab C = aaaba D = aaabb E = aabaa F = aabab
用这个替换截获密文中的每一个 5字节ab组合,可以得到一串160字节的密文
尝试nc连接创建帐号进行转账 ,将测试的截获密文同样转换成 160字节的密文
可以发现第6496字节是密码....
直接用帐号Ph和解出的密码登入对 Z2333帐号转账23333,得到FLAG
XDCTF2014 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 ...
随机推荐
- Scala API - 集合
- java文件上传系统
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...
- Linux命令集锦:ansible命令
ansible 命令主要用于批量管理,来实现自动化管理.常用批量操作包括:主机分组管理.实时批量执行命令或脚本.实时批量分发文件或目录.定时同步文件等. 一.安装 ansible yum instal ...
- python基础知识(集合)
集合 可变集合set()/不可变集合frozenset() {} 大写的拉丁字母 用于保存不重复元素.无序不能通过索引来获取 集合的创建 空集合 使用set()函数 变量名 = set() 集合的添 ...
- python基础知识(字典)
创建字典 变量名 = {key:value,.....} zip() 转换为zip对象 空字典 变量名 = {} 变量名 = dict(key = value,....) 创建只有键的字典 fr ...
- 【Gym - 100923I】Por Costel and the Pairs(思维题)
Por Costel and the Pairs Descriptions 有T组测试样例 有n个男的,n个女的,第i个人都有为当前一个大小为i的懒惰值,当一男一女懒惰值的乘积<=n他们就就可以 ...
- Books Exchange (easy version) CodeForces - 1249B2
The only difference between easy and hard versions is constraints. There are nn kids, each of them i ...
- mac编译openJDK8
买了<深入理解Java虚拟机> 周志明著这本书一直没有看,我们的程序都用JVM在跑,所以学习java必须掌握JVM,才能理解我们对象到底干嘛了. 1.为什么要编译JDK 想要一探JDK ...
- Linux按顺序启动多个jar的shell脚本
#!/bin/sh export EUREKA=pigx-eureka.jar export CONFIG=pigx-config.jar export GATEWAY=pigx-gateway.ja ...
- Docker不完全使用指南
Docker官方文档:https://docs.docker.com/ 神马是Docker? Docker可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器. 开发者在笔记本上编译测试通过 ...