直接上硬菜。盲注的一段语句:函数
1170 UNION SELECT IF(SUBSTRING(current,1,1)) = CHAR(119) , BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM (SELECT Database() as current) as tb1;加密
意思是想搞库名。判断库名的第一个字母时否是w(CHAR(119))。若是为真那就会经过BENCHMARK()函数形成较长延时,若是不为真很快就执行完了。这样遍历全部的字母把库名所有验证完为止。spa
看着都不熟悉了,挨着重新学一遍,加油。字符串
UNION 和UNION ALL做用:合并两个或者多个select相同列结果集。只要保证列相同就行select
UNION:筛选去重合并。遍历
UNION ALL:简单粗暴的合并,显示全部结果。二进制
eg:客户端
SELECT User,Sex FROM usertab1 UNION SELECT User,Sex FROM usertab2;#结果总共条数12条,由于过滤了重复的查询
SELECT User,Sex FROM usertab1 UNION ALL SELECT User,Sex FROM usertab2;#结果总共条数38条,简单合并拼接tab
SUBSTRING做用:字符截取,SUBSTRING(被截取字段,截取开始位置,截取长度)
eg:
SELECT SUBSTRING(UserName,1,1) AS fristname,UserName FROM users;#fristname列查询出UserName列中值的第一个字符
BENCHMARK做用:BENCHMARK(函数执行次数,表达式)
eg:
select BENCHMARK(1000000,MD5('8087878766d'));#结果为0,时间: 0.321s,时间为客户端通过时间
ENCODE:扯出了一堆加密函数,ENCODE(str,key) 使用key做为密钥加密字符串str,调用ENCODE()的结果是一个二进制字符串,它以BLOB类型存储