ZCTF-2017 比赛总结
这次ZCTF办的还是相当不错的,至少对于Pwn来说是能够让人学习到一些东西。
第一天做的不是很顺利,一直卡在一道题上不动。第二天队友很给力,自己的思路也开阔起来了。
关于赛题的优点
我觉得这次的Pwn300-class是一道比较有意思的题,整数溢出并不难找。比赛过程中可以很快的发现这个漏洞,但是接下来的利用比较头疼,我一直到比赛结束都未能想到是通过setjmp这个函数进行利用的。
这是我第一次见到setjmp这个函数,通过writeup我了解了一下这个函数是以一个缓冲区来保存跳转的目的地址的,这一点有点像线程切换的上下文context。当时我直接把它当成goto也没有详加了解就略过了。
此外这道题还有一个点比较有意思,就是利用atoi函数的一个特性:
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零,
当遇到非数字字符时会停止转换,这点也是我没有意识到的,利用这一点可以使用atoi的栈空间进行gadgets的布局。
此外通过sandbox这道题学习了一波linux的父-子进程调试机制。因为我是搞Windows底层出身的,对于Linux的各种机制不是很熟悉,这次学习了一下。
ptrace 的使用流程一般是这样的:父进程 fork() 出子进程,子进程中执行我们所想要 trace 的程序,在子进程调用 exec() 之前,子进程需要先调用一次ptrace,以 PTRACE_TRACEME 为参数。这个调用是为了告诉内核,当前进程已经正在被traced,当子进程执行 execve() 之后,子进程会进入暂停状态,把控制权转给它的父进程(SIG_CHLD信号), 而父进程在fork()之后,就调用 wait()等待子进程停下来,当 wait() 返回后,父进程就可以去查看子进程的寄存器或者对子进程做其它的事情了。
当系统调用发生时,内核会把当前的%eax中的内容(即系统调用的编号)保存到子进程的用户态代码段中(USER SEGMENT or USER CODE),我们可以像上面的例子那样通过调用Ptrace(传入PTRACE_PEEKUSER作为第一个参数)来读取这个%eax的值,当我们做完这些检查数据的事情之后,通过调用ptrace(PTRACE_CONT),可以让子进程重新恢复运行。
这道题基本上就是这样的流程
fork出的子进程首先调用PTRACE_TRACEME向父进程宣告,然后通过execl加上argv路径执行沙盒中的程序。
而父进程则是监视子进程的调用,一旦超出限制就会结束进程。
还有就是Pwn200-login,比赛第一天的时候我和队友一直在往爆破上面想,现在想来也是比较弱智的。。因为第一不能确定是否是fork的进程,第二是有alarm怎么可能爆破的出来。后来晚上晨升牛说可以往字符串漏洞上搞。自己试了一下发现的确可以,搞出了任意地址写,但是没能找出可以leak的地方,然后晨升牛已经拿到flag了。。ORZ解题真是太快了。通过这道题学到的就是格式化函数可以通过分段格式化进行利用,这个以前也是没有遇到过的。
最后就是题量还是比较足的,考察点很多。
一些不足
因为很快自己也要给XCTF出题,所以这里记录一下。
第一是类型还是比较单一的,基本上都是NX+CANARY的情形,到自己出题时一定要注意一下出一些其它保护的绕过考察,比如地址无关。
第二是感觉题目还是为了出题而出题,这一点老外的比赛做的比较好,希望轮到自己时可以改进。
其它
这次比赛下来感觉自己的水平还是与dalao们有一些差距,一些思路难以第一时间反应过来,幸好搞Pwn的队友们相当给力,尤其是晨升牛各种秒题ORZ...,成绩还是相当不错,Nu1L这次第三,与第一名只有一两道题的差距。这次比赛自己的产出不是很多,比较惭愧,希望下次能够为队伍做更大的贡献,也希望Nu1L下次可以拿到第一。
ZCTF-2017 比赛总结的更多相关文章
- 近几年杭电OJ大型比赛题目合集【更新到2017年11月初】
2017年: 区域赛网络赛 6194~6205 6206~6216 区域赛网络赛 6217~6229 2016年: 区域赛网络赛 5868~5877 5878~5891 5 ...
- 【四校联考】【比赛题解】FJ NOIP 四校联考 2017 Round 7
此次比赛为厦门一中出题.都是聚劳,不敢恭维. 莫名爆了个0,究其原因,竟然是快读炸了……很狗,很难受. 话不多说,来看看题: [T1] 题意: 样例: PS:1<=h[i]<=100000 ...
- 【Codeforces】Helvetic Coding Contest 2017 online mirror比赛记
第一次打ACM赛制的团队赛,感觉还行: 好吧主要是切水题: 开场先挑着做五道EASY,他们分给我D题,woc什么玩意,还泊松分布,我连题都读不懂好吗! 果断弃掉了,换了M和J,然后切掉了,看N题: l ...
- 【2017.12.02】C组比赛总结
这次考得不怎么样,只有200分! T1:读书 这题水水水! 这题就是一道循环题嘛! 直接一边循环一边做就好了! T2:恐怖分子 这题我是直接暴力的. 这题就是求至少用多少条经过(x0,y0)的不同直线 ...
- 2017.10.28 C组比赛总结
这次比赛有点坑... [GDKOI2004]石子游戏 方法:判断奇偶性 输入n 如果n是奇数,输出 xiaoshi 如果n是偶数,输出 xiaoyong 比赛得分:30 错因:找错规律了(忘记了两个人 ...
- 2017.10.21 C组比赛总结
今天考得不太好,只拿了100+0+0+30=130分... [GDKOI训练]音乐节拍 考场AC了! 其实就是大水一道! 思路:二分查找 每次输入后,输出该时刻所在的区间的编号就好了. 总体难度:★★ ...
- 2017.9.23 C组比赛总结
今天又回到了C组,感觉爽歪歪~分数终于是个三位数了,yes! 第一题,赛车.水!只用一个贪心就可以AC了. first,以速度为关键字小到大qsort一下... scond,枚举每一个赛车,看看它可以 ...
- “百度杯”CTF比赛 2017 二月场_onthink
题目在i春秋ctf训练营中能找到,这题直接拿大佬的wp来充数 百度找到onethinnk的一个漏洞. 参考:http://www.hackdig.com/06/hack-36510.htm 就是注册个 ...
- 百度杯”CTF比赛 2017 二月场 没错!就是文件包含漏洞。
题目源码: 文件包含漏洞的话,看一下 你么可以使用php://input 伪协议,执行代码(参考了大佬WP)这里使用了POSTMAN, 目录下还有一个dle345aae.php文件,呢么用cat命令打 ...
- “百度杯”CTF比赛 2017 二月场 爆破-3
进入题目,题目源码: <?php error_reporting(0);session_start();require('./flag.php');if(!isset($_SESSION['nu ...
随机推荐
- Java 8新特性之接口改善(八恶人-1)
Daisy Donergue 多莫歌·黛西 “By woman, you mean her?” 她也能叫女人? Java 8在13年9月发布,写这篇博文的时间已经是17年12月份了.来的有点晚,但是有 ...
- MySQL索引类型,优化,使用数据结构
工欲善其事必先利其器 半藏说道:“若你在路途中遇到上帝,上帝也会被割伤.” 一.mysql 索引分类(默认使用B树结构)在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 My ...
- 认清Android框架 MVC,MVP和MVVM
编者按:现在很多时候,我们都是面向搜索(或 Google 或百度).GitHub 编程,那么,在早期没有互联网的情况下,该如何学习编程,成为一名真正的开发者?亦或是作为一名小白,如何进入互联网编程时代 ...
- 【BZOJ1970】[AHOI2005]矿藏编码(模拟)
[BZOJ1970][AHOI2005]矿藏编码(模拟) 题面 BZOJ 洛谷 题解 随便写个高精度模拟一下就完了. #include<iostream> #include<cstd ...
- 【洛谷P1462】通往奥格瑞玛的道路
题目大意:给定一个 N 个点,M 条边的无向图,求从 1 号节点到 N 号节点的路径中,满足路径长度不大于 B 的情况下,经过顶点的点权的最大值最小是多少. 题解:最大值最小问题一般采用二分答案.这道 ...
- EasyUI 格式化列
以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式化一个数据网格(DataGrid)列,我们需要设置 ...
- cin,cout,printf,scanf效率对比
From:http://www.cnblogs.com/killerlegend/p/3918452.html Author:KillerLegend Date:2014.8.17 杭电OJ之3233 ...
- 【前端安全】JavaScript防XSS攻击
什么是XSS XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击.本来缩小应该是CSS,但为了和层叠样式(Cas ...
- Training (deep) Neural Networks Part: 1
Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...
- jQuery1.11源码分析(3)-----Sizzle源码中的浏览器兼容性检测和处理[原创]
上一章讲了正则表达式,这一章继续我们的前菜,浏览器兼容性处理. 先介绍一个简单的沙盒测试函数. /** * Support testing using an element * @param {Fun ...