2021-1-28日报
明后天要搬家,可能没空来搞这个
看情况吧
1.哔哔叨叨(BBDD)
js中’b’+‘a’+ +‘a’+‘a’=baNaNa是为什么啊?
一个表达式中如果有减号 (-)、乘号 (*) 或 除号 (/) 等运算符时,JS 引擎在计算之前,会试图将表达式的每个分项转化为
Number 类型(使用 Number(x) 做转换)。如果转换失败,表达式将返回 NaN
。如果其中有一个变量是字符串,则会将两边都作为字符串相加。
+'12abc';// NaN
+'123';// 123
现在分析 ‘b’+‘a’+ +‘a’+‘a’
上面的表达式相当于’b’+‘a’+ (+‘a’)+‘a’
因为(+‘a’) 等于 NaN,所以:
‘b’+‘a’+ (+‘a’)+‘a’ = ‘b’+‘a’+ “NaN”+‘a’=‘baNaNa’
2.第五章SQL注入
类似读书笔记
注入的分类
书中认为SQL注入只分两类,分别是数字型和字符型
像cookie,post,盲注,延时只是在这两类的基础上在不同位置以不同形式的展现
数字型注入多出现在自动推导变量类型的弱语言中,如PHP
having子句和group by子句
https://blog.csdn.net/qq_36743482/article/details/78464734
SQL中各字句执行顺序:
select col_name from table
where col_name > xxx
group by col_name
having …
order by … desc
尝试having子句
having子句作用:对由sum或其它集合函数运算结果的输出进行限制。
SELECT t.*
from test t
HAVING t.score>80
;
结果:只显示得分80以上的
结论:在不搭配group by 的情况下,使用having子句仅仅对结果进行限制,等价于where条件
尝试group by子句
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
https://www.cnblogs.com/jingfengling/p/5962182.html
简单地说,有些像分类汇总
SQL Server
和mysql不太一样的地方,可以准确地定位错误,因此
利用错误消息提取信息
1.这里的枚举当前表和列用到了刚刚的group by和having
select * from users where username= 'root' and password= 'root' group by users.id having 1=1--'
2.利用数据类型错误提取数据
试图把一个字符串和非字符串比较
select from users where username= 'root' and password= 'root' and 1> (select top 1 username from users)
系统函数
函数 | 说明 |
---|---|
stuff | 截取字符串 |
ascii | 取ascii码 |
char | 根据ascii取字符 |
getdata | 返回日期 |
count | 返回组中总条数 |
cast | 更换数据类型表达式 |
rand | 返回随机值 |
is_srvrolelemember | 登录名是否为服务器角色 |