CSRF
CSRF(Cross-Site Request Forgery)跨站请求伪造 CSRF(GET)看一下提示,可以得到很多的用户与密码,这里以 vince 账户为实验。 12345姓名:vince性别:boy手机:18626545453住址:chain邮箱:vince@pikachu.com 将邮箱修改成 mov@pikachu.com 了。 不过没看到它在 URL 有显示 GET 获取的数据罢了。 我们看一下浏览器中表单中各个组件的 name 值 我们简单构造一下 1?sex=boy&phonenum=18626545453&add=chain&email=mrvirus@qq.com&submit=submit 发现没有用。那我老老实实用 Burpsuite 去抓包看看有什么缺的。 **tips:**其实少写一个 submit 那个发送按键,因为 value 为 submit,所以后面再加一个 submit=submit。 1234567891011GET...
PHP反序列化
原理序列化 serialize()把一个对象变成可以传输的字符串 反序列化 unserialize()把被序列化的字符串还原成对象 魔法函数123456常见的几个魔法函数:__construct()当一个对象创建时被调用__destruct()当一个对象销毁时被调用__toString()当一个对象被当作一个字符串使用__sleep() 在对象在被序列化之前运行__wakeup将在序列化之后立即被调用 题目一开局就然我们输入一个序列化数据,不知道想干啥,我们就随便写一个对象 123456class S{ public $text = 'pikachu';}$s = new S();$s = serialize($s);echo $s; 1O:1:"S":1:{s:4:"text";s:7:"pikachu";} 输入进去,发现下面文本有一个输出了一个 pikachu,真神奇,不知道怎么实现的? 1234567class S{ public...
File Inclusion
文件包含漏洞 本地文件包含漏洞 远程文件包含漏洞 include、include_once、require、require_once include 和 requrie 的区别 include 包含有错误还会继续运行,而 require 会中止。 xxx 和 xxx_once 的区别 once 只会运行一次 下面的 local 和 remote 的区别就是,看一下代码 local 的 1include "include/$filename"; remote 的 1include "$filename"; 可以看到 local 的代码明显自由度不高,被 include/限制了,但是我们可以用.. .这样的符号在本地内 include。 remote 不仅可以在本地,还可以用 URL 引用互联网上的 php 以及其他的文件。 File Inclusion(local)File Inclusion(remote)
Croos-Site Scripting
XSS(跨站脚本)一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。 类型: 反射型 XSS 存储型 XSS DOM 型 XSS 反射型 XSS(GET)有输入框我们就可以试试一些 js 代码 1<script>alert("hello");</script> 输入进去,我们可以看到,前端限制了长度 这个简单,这种就是用了 HTML 的语法限制。我们浏览器调试一下。把 maxlength 改成 100 甚至更大。 解决 这个题目有一个 GET,就是通过 URL 进行传输信息。 说明我们不仅可以通过修改 HTML 语法进行绕过,还可以通过修改 URL 进行绕过。 方法 修改 HTML 修改 URL 反射型 XSS(POST)先看一下提示,我们获得了一个账号。 我们进去之后,可以输入那串 js 代码即可。 存储型 XSS看到一个文本框,老规矩,先输入我们的 js 代码。 ok 可以。 并且每次刷新也不会消失。 DOM 型 XSS可以看到,这次简单输入 js...
SQL-Inject
SQL 注入 前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 MySQL 通用查库、查表、查列我们直接使用 MySQL 命令行进行操作。 使用库我们平时在进行 SQL 注入时,后端代码已经自己使用库了。但是,我们在使用 MySQL 命令行工具时,是需要通过命令来使用库的。 1use pikachu 我们就可以查看当前库了 1234567mysql> select database();+------------+| database() |+------------+| pikachu |+------------+1 row in set (0.00 sec) 查库1select schema_name from information_schema.schemata; 我们呢发现命令行输出了这两个数据库。原理是使用 select 读取了 information_schema 数据库中的 schemata 表中的 schema_name...
Over Permisson
水平越权我们输入 kobe 的账号密码,进入进去,查看个人资料,我们发现 URL 上面的信息,我们可以尝试改成其他用户名(lucy/lili/kobe) 1http://192.168.17.129:8000/vul/overpermission/op1/op1_mem.php?username=kobe&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF 发现改成 lucy 的,在 kobe 页面也可以看到 lucy 的个人信息,这就是水平越权漏洞了。同样的可以看到 lili 的信息。 垂直越权提供了 admin/123456、pikachu/000000,还说明了 admin 是超级用户,我们登录 admin 账号试试。同样的我们发现了添加用户和删除用户的 URL,我们就登录看 pikachu 这个账户看能不能利用即可。 添加用户的...
RCE
RCE(remote command/code execute)远程命令/代码执行。 exec “ping”Docker 安装 ping 命令工具由于我们 docker 中并不能执行 ping 命令,所以我们需要安装 ping 命令的工具。 我们先进入 docker pikachu 的容器(注意需要 sudo) 1docker exec -it [容器ID] [/bin/bash] 进去之后,就用 apt 工具进行安装 1apt install iputils-ping 原理和 SQL/XSS 注入一样,都可以堆输入框进行命令构造。SQL 构造的是 SQL 语句,XSS 一般构造 HTML 或者 JS,而 RCE 在这里构造 SHELL 命令。 在 Linux 中,ping 命令是一直执行的,所以上面应该是 1ping -c 4 [addr] 我们的输入就是 addr,这也是我们构造的地方。如果我们想查看当前目录的文件,就构造成了 1ping -c 4 www.baidu.com ; ls 这里的分号是 Linux Shell...
SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造) PHP中下面函数的使用不当会导致SSRF: 123file_get_contents()fsockopen()curl_exec() file_get_contents() 将整个文件读入一个字符串 fsockopen() 打开 Internet 或者 Unix 套接字连接 curl_exec() 执行 cURL 会话 SSRF(curl)curl 可以接收很多内容,不论是一个链接,还是一个文件路径。如果是一个链接,curl 就直接访问那个链接,如果是一个文件路径就直接访问那个文件。 我们发现超链接是 1http://192.168.17.129:8000/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/vul/vul/ssrf/ssrf_info/info1.php 不过我们的端口是 8000 ,我们再设置一下,还是不行,我试了一下,必须是外部的 IP(不管是局域网 IP 还是公网 IP...
Unsafe Filedownload
不安全的文件下载 我们随便看一个下载链接 1http://192.168.17.129:8000/vul/unsafedownload/execdownload.php?filename=kb.png 我们看到 filename=kb.png 那我们将 filename 后面对应的文件改掉怎么样?我们发现文件不存在,这是怎么回事。 1http://192.168.17.129:8000/vul/unsafedownload/execdownload.php?filename=down_nba.php 我们通过浏览器看图片的相对路径,发现前面多了一个 download 文件夹,很像上一节的本地包含。  1192.168.17.129:8000/vul/urlredirect/urlredirect.php?url=../