pikachu笔记(没写完)

发布于:2025-09-10 ⋅ 阅读:(23) ⋅ 点赞:(0)

关一:(Burte Force)暴力破解

一:基于表单的暴力破解

 send to intruder

 选择集束炸弹模式——Cluster bomb

传入密码库 

 开始攻击,找差异的长度对应的密码

 登录成功

二:验证码绕过on server

验证码的实现位置有两个——客户端(前端),和服务器端(后端)

前者可以通过禁用is来绕过,比较不安全

根据提示我们知道第二小关是后端实现的验证码,并且可以发现只有在刷新页面的时候验证码才会刷新,所以输入的正确验证码,再提交bp抓包,其余的流程跟前面一样

三:验证码绕过 on client

输入正确验证码,但账号名和密码错误时,会出现如下提示,验证码自动刷新

验证码错误的话,则会出现弹窗

所以f12+f1,高级设置里面禁用js,然后bp抓包,流程仍然和上面一样 

四:token防爆破

正常bp抓包,

 send to intruder

开始攻击,选择pitchfork交叉攻击模式 

 跟上面流程一样,先clear干净,再把password和token add进去

去setting里面找到Grep-Extract 

点add进去,点Refetch response

 在出现的代码里面找到我们所需的value值并且复制

 set1位置还正常添加我们的passowrd字典,set2位置的payload type改成Recursive grep,然后把value值粘贴过去


 开始攻击,按长度找到所需密码

 登陆成功

 关二:Cross-Site Scripting

缩写css,为了避免冲突,实际上也就是xss漏洞,其中xss漏洞大致分为三种类型

1.反射性xss(恶意链接触发)

2.存储型xss(插入恶意脚本)

3.dom型xss(url里触发)

xss常用的测试语句有:

  • <script>alert('lee')</script>
  • <a herf="#" οnclick="alert('lee')">
  • <img src=x οnerrοr="alert('rerelee')">

这里附上dvwa靶场当中的xss漏洞,可以做个参考

dvwa10——XSS(DOM)-CSDN博客

dvwa11——XSS(Reflected)_dvwa xss加固源码分析-CSDN博客

dvwa12——XSS(Stored)-CSDN博客

一:反射型xss(get)

先尝试代码1插入,发现有长度限制,于是我们通过修改源代码修改输入框限制长度

首先找到对应的html代码段,这里我们可以发现输入框内的最大长度被卡在了20,手动把他修改到70,然后再开始攻击

提交代码段,成功回显

<script>alert('xssreflected')</script>

 

二:反射性xss(post)

这一关是post型的,我们先根据前面获得的账号和密码登录进去

然后从框插进去和上一关一样

先查看前端代码框内是否有长度限制,没有限制,直接插入

回显成功 

三:存储型xss

这一关和前一关反射型xss的区别是,存储型页面实现的功能是获取用户插入的内容,然后将其插入到数据库中,并且讲数据库的留言信息输出到页面上,我们来直接把代码写入框

提交,回显

然后我们无论再在留言板种输入什么,都只会回显这一个内容,因为恶意代码已经“存储”进了数据库,比如我们输入1

四:DOM型xss

使用dom型xss可以实时更新和访问文档内容,先随便输入一串字符,发现这一串代码出现了变化

这时候我们点看what do you see 的超链接,可以发现页面直接跳转404 not found了 

所以我们直接在页面源代码上进行注入,也就是在超链接标签上改动

这里补充一个知识点,在xss攻击种,事件处理器常用于触发恶意js代码

比如:

  • onclick(点击时触发)

  • onerror(加载失败时触发)

  • onmouseover(鼠标悬停时触发)

这里我们构造onclick,使得xss回显在点击超链接之后,注意观察可以发现源代码内已经给了提示

 直接照样在空白栏插入

' onclick=alert('xssssss')>

回显成功 

五: DOM型xss-x

跟上一节一样,只是多了一个点击步骤,回显成功

' onclick=alert('xssssss')>

六:xxs之盲打 

首先介绍一下xss盲打,当攻击者注入xss代码之后,无法在前端看到执行结果,攻击结果只存储在后台或者管理员能看到的地方,常见于留言板,客服系统

特征就是:

  • 前端无回显
  • 后台管理员查看留言内容

这一关在提示中给出了后台查看的地址 

在留言板中正常输入我们的攻击代码,正常提交

<script>alert('xsssssss盲打')</script>

提交信息 ,根据提示地址进入后台,登录密码在新界面的提示中:admin 123456

 

登陆后成功回显

 七:xss之过滤

核心原则是:在数据进入系统的时候,过滤并拒绝危险字符,

比如黑名单,白名单过滤,html转义,js转义,url转义

一些常见的绕过手法比如大小写绕过,转义字符绕过

我们先逐个尝试提交<script>

发现写到<script之前回显全是空白,所以是这个标签被过滤了

  • 可以尝试大小写绕过
<sCriPt>alert('leexss')</ScripT>

或者换一种方法来写攻击代码`234

<a herf="#" onclick="alert('lee')">

 八:xss之htmlspecialchars()

先了解一下这个函数的作用,htmlspecialchars()可以帮助我们找到危险符号,把他转换成html实体

比如

<script>alert("XSS")</script>
//如果没有转义
//得到这个:
<div>
  <script>alert("XSS")</script>  <!-- 直接执行弹窗! -->
</div>
//转义完毕:
<div>
  &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt; <!-- 显示为文字,不会执行! -->
</div>

也就是说,浏览器只会显示这段文字,而不会把他当作代码执行

我们尝试构造<a herf="#" οnclick="alert('lee')">这个标签

' onclick='alert("lee")

九:xss之href输出

首先我们分析一下这一关的html,可以发现我们在输入lee之后,输入框下面的超链接跳转内容变成了我输入的内容,没有任何过滤

这时候我们就可以把这段内容改成我们的目标入侵网址等等

这里我们尝试写入几个js的alert代码

注意!!在代码之前要加上javascript的伪协议,这样才能告诉编译器后后面要执行的是js代码

举例几个

有关alert函数这里做一个补充:

alert函数只会弹出对话框,但只显示字符串的内容,不会显示包裹字符串的引号,如果要显示引号,需要在外再加一层

javascript:alert(55555)
javascript:alert("lee")
javascript:alert("'lee'")

这里再附上这几组代码的显示结果

十:xss之js输出

我们点击右键查看页面的源代码,可以看到关于输入内容进一步判断的js代码

随便先输入一下lee,发现这里出现了变化

就可以利用这个变化提前进行script标签的闭合,然后把后面的判断注释掉

';javascript:alert(1111)//

其中alert中关于引号的规则与上面相同

回显成功

关三:CSRF

浅浅总结一下我理解的CSRF———Cross-site request forgery(跨站请求伪造),攻击者通过恶意链接等手段,诱导用户访问恶意页面,进而实现攻击目标

附上dvwa有关csrf的靶场攻略

dvwa3——CSRF_dvwa csrf-CSDN博客

一:CSRF(get)(恶意链接)

先看一下右上角的提示

这里我们尝试最后一组密码lucy与123456,发现得到一组可修改的个人信息

然后在上面修改信息,提交的时候用bp抓包一下,这里我把地址改成了hacker,其余自由发挥

在点submit的时候用bp抓包,得到如下,我们从里面抓取关键信息,用关键信息拼接url,

GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=123123&add=hacker&email=123123%40pp.com&submit=submit HTTP/1.1

其实我们可以发现这一行代码中没有用户名,所以是谁登录都无所谓,我们右键copy复制url

可以发现,我们在repeat里面任意修改这几个可修改的参数,再copyurl,这样被攻击者直接点开的url就是被修改过的,比如我再把hacker改成hacker1111

http://192.168.37.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=123123&add=hacker1111&email=123123%40pp.com&submit=submit

新启动一个页面然后打开,这个url就是我们的恶意攻击链接,目标用户一旦点开,攻击则有效

为了进一步隐藏,我们也可以利用一些小工具修饰url,使攻击效果更加隐蔽

二:CSRF(post)(恶意网页)

首先介绍一下黑客站点:是一个攻击者做的假网站,目标用户一旦访问,就会自动对用户发起恶意请求

我们还是用bp拦截一下submit,得到如下

右键generate CSRF PoC,我们就得到了csrf的html代码

创建一个新html文件,把代码复制粘贴进去,对代码进行我们想要的修改

在火狐的界面直接ctrl-o打开我们修改后的html文件

可以看到修改成功了

关四:SQL inject

有关sql的一点复习:

先解释一点名词:

information_schema.tables:包含数据库中的所有表

table_scheme:数据库名称

table_name:表名

information_schema.columns:包含数据库中所有表的列的信息

column_name:列名

table_name:表名

梳理一下错误类型:

基于错误注入:

数字型错误注入,字符型错误注入,括号型错误注入,附上判断流程

注:字符型和括号型必须结尾闭合--+

布尔盲注:

先确定是否存在注入点,判断完类型之后在后面加上and判断

?id=1' AND '1'='1    -- 页面正常(True)
?id=1' AND '1'='2    -- 页面异常(False)
  • 基本步骤

1.爆库名长度

2.根据长度爆库名

3.根据当前库爆表名数量

4.爆表名长度

5.爆表名

6.根据表爆列数量

7.爆列名长度

8.爆列名

9.爆数据值

其中逐个字母爆数据库名表名列名可以使用python脚本来运行

时间盲注:通过时间延迟判断结果,利用时间函数sleep(n),构造条件语句,如果条件为真,延迟n秒,如果为假,页面快速响应

关键函数:

  • sleep(n)

    • 让数据库等待n秒

  • if(条件,真时执行,假时执行‘’)

    • 判断

  • substr(str,start,length)

    • substr("hello",1,1)返回h

  • 子主题 4

    • ascii(char)

      • ascii('a')=97

  • 如果条件为假 → 不延迟 → 页面快速响应

再补充几个常用sql语句

  • 常用sql语句

    • 增删改查

        • 自增

          • auto_increment

        • 插入

          • insert into tablename(列1,列2...) values(值1,值2...)

        • 删除数据

          • delete from 表名 where 列名 = 值

        • 删除库

          • drop database 库名

        • update 表名 set 列名 = 新值 where 列名 = 某值

        • select 列名 from 表名 where 字段1='条件1'and字段2='条件2'

    • select+聚合函数

      • 去重函数

        • select distinct

      • 数据库名

        • database()

      • 多行数据合并成一个字符串

        • group_concat(str1,str2,...)

      • 没有分隔符地连接字符串

        • concat(str1,str2,...)

      • 含有分隔符地连接字符串

        • concat_ws(separator,str1,str2,...)

    • 关键字

    • 注释

      • --(空格)

      • 内联注释

        • /**/

      • 绕过防火墙注释(WAF)

        • /*!语句*/

一:数字型注入:

先bp查询抓包

我们测试几组数据

id=1'--+数字型报错,其余不爆
id=1 and 1=1--+正常回显
id=1 and 1=2--+回显但内容空白

确定是数字型,然后order by判断列数,确定有两列

id=1 order by 2--+回显正常
id=1 order by 3--+报错

union select查询回显位置

id=-1 union select 1,2--+

用database()和version()函数获取数据库名和版本号

获取所有表名

id=-1 union select database(),group_concat(table_name) from information_schema.tables where table_schema=database()--+&

获取users表所有的列名

id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'--+

爆用户名和密码

id=-1 union select username,password from users--+

二:字符型注入

三:搜索型注入

四:


网站公告

今日签到

点亮在社区的每一天
去签到