有幸bjx师傅又让我参加了一次awd,算是第二次体验awd,又感觉学习到了很多东西。

  第一次打这种模式的时候,我几乎什么都没有做,就给师傅们下载文件,上传文件了。(太菜了)

  昨晚分的组,发现没有人是pwn方向的,那么就只能我一个人来负责pwn了。昨晚和今早简单的学习了一下patch,突然感觉patch比写exp脚本要简单一些。

  今天的比赛也没有写exp拿分,一直在补自己程序的漏洞。

  先说一说pwn1吧

pwn1

  这里有一个这样的知识点,就是在c语言中生成随机数,其实是一个伪随机数,在调用rand之前需要先用srand,而srand是初始化随机数发生器。

  srand() 用来设置 rand() 产生随机数时的随机数种子。参数 seed 必须是个整数,如果每次 seed 都设相同值,rand() 所产生的随机数值每次就会一样。

  这就意味着,现在我可以直接用脚本跑出每次v3的值。

  脚本:

 1 #include<stdio.h>
2 int main()
3 {
4 srand(0);//产生随机数种子
5 int i;
6 for(i=0;i<5;i++)
7 {
8 int rand_num=(rand()%5);
9 printf("%d\n",rand_num);
10 }
11 return 0;
12 }

  

  这样我就知道switch先进入的是3了,那么我们看看3这个函数干了些什么。

  

  大概就是先让你往buf输入东西,然后进入sub13B0函数,s1是返回值,再判断s1和"aXdhbmFmbGFn"是否相等,如果相等就输出flag,这个时候我们就修补read函数的参数,将fd修改成0,这个漏洞就算是patch掉了!

  修改之后

  第一个over,接下来是进入1,看看1干了些什么。

  这里其实就带一点盲猜了,v3大于0x63就执行下面的命令,我就想,不能那么容易被绕过,这里就把0x63修改成了0x99,就让过更难一些,当时具体也没分析出来了,就这样过去了。

  接下来是进入2,2是一个堆题目,我扫了一眼是没发现毛病。。。

  接下来就是0,这里的read是可以进行溢出的,虽然题目开启了canary保护,但是相信师傅们前面就可以leak出来canary,这里想着, 那就多打一次补丁,让buf只能输入两位数吧。

  接下来看到system函数,相必这里也是一个getshell的第一点,但是我觉得patch的差不多了,也就没有再管。到这里就是我对pwn1的全部补丁。接下来看一下pwn2

pwn2

  堆才刚开始学,也不会。。。

  是常见的菜单题,我在delete函数中发现了这个,很明显的一个uaf漏洞,按道理,uaf漏洞修补需要将指针清0,但是这个patch我是真不会打。网上教程也不多,只知道大概思路是将这样的将call free ----> call .eh_frame地址,然后在.eh_frame的地址上写指针清零的汇编,然后写个ret再调回去。这样就不会覆盖其他数据了。

  但是。。。我在.eh_frame上写汇编一直不成功,可能是.eh_frame段没有执行权限的原因,我也不会用ida给.eh_frame段赋执行的权限。。。就卡死了。。。

  记:参加了这次awd确实又学习到不少操作,中间大概有一个半小时,我pwn1没法替换源文件,一直不知道怎么回事,后来重启了一次还不行,重启了第二次才又可以替换了。大概打到后面,pwn1几乎没有失多少分。感觉做的很不错了。pwn2实在不会修复,不过师傅们写脚本写的也慢,最后30分钟的时候,我们的pwn2才被打。也就是最后30分钟pwn2一直被打,pwn1一直安全。唉,还是自己太菜了,一个exp都没有写出来!继续加油了!

记一次AWD的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  3. 这些年一直记不住的 Java I/O

    参考资料 该文中的内容来源于 Oracle 的官方文档.Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以从这个总入口 Java SE 8 Documentati ...

  4. 千回百折:百度Java研发offer斩获记和经验分享

    起因 面试过程 等待offer的过程中悟道 Java面试常考知识点个人总结 过程 百度——作为国内互联网的巨头之一,最近的一些风波对其褒贬不一,但是类似事件不是第一次发生,也绝对不是最后一次,对于真的 ...

  5. 记一次nginx部署yii2项目时502 bad gateway错误的排查

    周六闲来无事,就试着安装和部署下yii2,安装过程没什么问题,但部署到nginx上时遇到了502 bad gatewary问题,折腾了半天才搞定.这个问题是我以前在部署yii2时没有遇到过的,因此记在 ...

  6. 原生JS实战:写了个一边玩游戏,一边记JS的API的游戏

    本文是苏福的原创文章,转载请注明出处:苏福CNblog:http://www.cnblogs.com/susufufu/p/5878913.html 本程序[一边玩游戏,一边记JS的API]是本人的个 ...

  7. ArcGIS中的标注和注记

    在ArcMap中可以使用标注和注记来识别要素,选择标注或注记取决于你需要如何控制文本显示以及在ArcMap中如何存储文本. 1.标注只是临时显示相关数据或字段 2.标注用于长时间保存数据以及显示方式. ...

  8. 记处理线上记录垃圾日志 The view 'Error' or its master was not found

    最近监控线上日志,网站是ASP.NET MVC 开发的,发现不少错误日志都记录同样的内容: The view 'Error' or its master was not found or no vie ...

  9. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

随机推荐

  1. [bzoj4094]Optimal Milking

    建立线段树,维护区间左端点选/不选,右端点选/不选且不含有相邻两个同时选的最大值,合并时注意细节即可 1 #include<bits/stdc++.h> 2 using namespace ...

  2. mysql密码忘记如何恢复(windows/liunx版本:mysql-8.0.27)

    windows/liunx版本:mysql-8.0.27参考官网文档: https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.ht ...

  3. 彻底搞清楚 JavaScript 的原型和原型链

    JavaScript真的挺无语的,怪不得看了那么多的介绍文章还是一头雾水,直到自己终于弄懂了一点点之后才深有体会: 先从整体说起吧,发现没有基础做依据,那都是空中楼阁: 先从基础开始介绍吧,又发现基础 ...

  4. Run For Beer CF575G

    Run for beer CF 575G 如果直接bfs分层贪心可以做,但是很毒瘤,具体可以参考Gavinzheng的提交 考虑魔改dijkstra 首先,每次拿权值最小的来松弛肯定没有问题,只是怎么 ...

  5. CF1542E2 Abnormal Permutation Pairs (hard version)

    CF1542E2 Abnormal Permutation Pairs (hard version) good tea. 对于两个排列 \(p,q\),如果 \(p\) 的字典序小于 \(q\),则要 ...

  6. KVM原理

    虚拟化是云计算的基础.简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU.内存.IO 硬件资源,但逻辑上虚拟机之间是相互隔离的.物理机我们一般称为宿主机(Host), ...

  7. ubuntu20.04安装EasyConnect兼容性问题解决

    目录 1. 命令行启动EasyConnect 2. 降级pango 3. 重新启动EasyConnect,即可成功启动 Ubuntu20.04安装EasyConnect后无法启动的解决方案 工作使用操 ...

  8. 字符scanf 的输入注意

    1.注意scanf 不能有空格,如果有空格会将空格给输入进去 scanf("d "):---有空格 和scanf("d");--没有空格 有很大的区别

  9. 基于Kubernetes实现前后端应用的金丝雀发布

    基于Kubernetes实现前后端应用的金丝雀发布 公司的研发管理平台实现了Gitlab+Kubernetes的Devops,在ToB和ToC场景中,由于用户量大,且预发布环境和生产环境或多或少存在差 ...

  10. A Child's History of England.24

    Besides all these troubles, William the Conqueror was troubled by quarrels among his sons. He had th ...