直接上硬菜。盲注的一段语句:
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()函数造成较长延时,如果不为真很快就执行完了。这样遍历所有的字母把库名全部验证完为止。
看着都不熟悉了,挨着从新学一遍,加油。
UNION 和UNION ALL作用:合并两个或者多个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条,简单合并拼接
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类型存储