六月安恒月赛——记录
有段时间没有练习了,趁着周末做一下安恒月赛,这次的月赛题目大部分比较简单。
PWN和CRYPTO比较生疏就没做。
0x01 WEB——ezupload
题目是最常规的上传绕过,这里可以直接修改Content-Type和添加图片文件头来绕过检测。
另外,上传的文件后缀会被修改,如上传:eval.php
,最后会成为eval.gif,这里可以通过修改文件名为eval.php.php
来绕过,如图:
上传后直接命令执行拿到flag:
0x02 WEB——Mynote
这道题相对也比较简单一些
注册一个账号后,进入功能页面。可以上传文件、提交note等
上传可以修改type绕过,但是没有给出上传后的地址。
这里的笔记功能还存在XSS问题,但是不能打谁的Cookie,此题貌似XSS没什么用。
在查看图片页面,可以看到文件上传的图片,这里仔细观察,可以看到img标签是通过data:image
的base64数据格式展示图片的。
查看cookie,发现多了一个base64编码后的内容,解码得到一个PHP数组的序列化结果,而结果就是刚刚上传的文件名:
将eval.php
改成index.php
,base64编码后提交,得到报错,直接拿到上传路径:
接下来同样是直接访问WebShell,命令执行拿flag:
0x03 WEB——never give up
这题考察了MongoDB的点,如果没想到的话会没有思路。
题目是一个简单的页面,通过参数title传入任意值,会在当前页面上输出title的内容。
一开始觉得可疑的是源代码中有一大段压缩过的JS代码,但是发现是Jquery的JS代码,通过查看版本号,Diff对比了网上此版本的Jquery代码,发现并没有异常:
之后测试了很久,RPO、XSS等等,发现都没法利用,果断直接上AWVS开始漏扫。
意外收获:
最终利用MongoDB注入的格式,题目直接返回flag:
0x04 RE——太复杂了
这是一道简单的APK安卓逆向,逆向结果中的数组直接通过ASCII编码转为字母即可,最后凯撒解密拿到flag
0x05 RE——reverseme
这题更简单,直接字符串拼接,如图:
0x06 MISC——only wireshark
也是一道简单的流量分析,直接过滤http协议,导出post内容的图片即可,查看图片末尾即是flag
0x07 MISC——流量中的线索
这也是一道简单的题目,同样过滤http协议,看到返回的base64编码的内容:
对内容解密后的hex写入文件,拿到一个jpg图片,flag在图片中
最后,虽然这次题目总体简单,但是还是学到一些东西。
并且提醒自己,PWN和CRYPTO要提高了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python 调度算法 死锁 静动态链接 分页分段(七)
1 select poll epoll的区别 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点. (1)select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替,但是它是设备就绪时,调用回调函数,把就绪fd放入就绪链表中,并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的CPU时间。这就是回调机制带来的性能提升。 (2)select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,并且要把current往设备等待队列中挂一次,而epoll只要一次拷贝,而且把current往等待队列上挂也只挂一次(在epoll_wait的开始,注意这里的等待队列并不是设备等待队列,只是一个epoll内部定义的等待队列)。这也能...
- 下一篇
Java多线程 -- wait() 和 notify() 使用入门
在前面讲解synchronize的文章中,有提到wait和notify,大概描述了它的使用,这里我将根据官方api详细的教你如何使用。 所属对象 wait,notify,notifyAll 是定义在Object类的实例方法,用于控制线程状态。 文档分析 我们找到Object类,下载它的文档,翻译每个方法的注释。 总结如下: wait() 和 notify() 必须由对象持有者去调用,有三种方式: 1️⃣执行该对象的synchronized实例方法 2️⃣执行synchronized代码块 3️⃣执行该类的synchronized静态方法 当想要调用wait( )进行线程等待时,必须要取得这个锁对象的控制权(对象监视器),一般是放到synchronized(obj)代码中。 在while循环里用wait操作性能更好(比if判断) 调用obj.wait( )释放了obj的锁,否则其他线程也无法获得obj的锁,也就无法在synchronized(obj){ obj.notify() } 代码段内唤醒A。 notify( )方法只会通知等待队列中的第一个相关线程(不会通知优先级比较高的线程) ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群