Pikachu漏洞练习平台靶场通关笔记 - WileySec's Blog

Pikachu漏洞练习平台靶场通关笔记

Pikachu漏洞练习平台靶场通关笔记


Feature


暴力破解

基于表单的暴力破解

98883-g92xx0xcnrr.png

已知可登陆的账号密码为 admin/123456

登陆抓包,放到Intruder模块

37332-8cuno36mkk7.png

若已知账号为admin,则爆破密码

在BurpSuite中,将密码字段设置变量进行爆破

69795-ayn5hxtql2h.png

点击Start attack开始爆破

71231-lowttcet6ro.png

爆破完成后,对长度进行排序,可看到有几个返回包的长度不一致,length长度为35011、payload为123456的密码返回包中,发现登录成功字样,说明使用账号密码admin/123456即可登录成功,成功对该登录系统进行爆破。

验证码绕过(On Server)

10781-5pstkordcp.png

这次登录该系统,发现需要输入验证码

61967-hnrcujji8sp.png

这一关的验证码是在后台生成后放到前端,如果后台验证码刷新了,则上一次的验证码失效。

抓包后,发现验证码参数,经测试直接放入Intruder模块爆破即可,不要在Proxy->Intercept模块放包后刷新页面,因为刷新页面后后台的验证码也会随之刷新,从而使上一次验证码失效,导致爆破不了。

78564-vqidt3p6kgh.png

请求包密码为123456,带着验证码参数请求

76528-7bgd714tzv5.png

返回包中,返回了login success字样,成功爆破到密码。

验证码绕过(On Client)

33194-t6v3r57rx.png

输入账号密码和验证码,抓包

82867-87vj1s4zg2d.png

在抓包处,将验证码参数删除即可,则不会判断验证码,可直接爆破

Token防爆破?

此题的Token根本没用,删除token参数即可直接爆破


XSS跨站脚本攻击(Cross-Site Scripting)

反射型XSS(get)

10244-ycxt47c6vl9.png

在测试时,写入xss的payload发现被前端限制了输入长度

56171-1c3lb752mt9.png

审查元素修改下长度输入即可

28826-l15kxso9l5.png

提交后,发现触发了xss

反射型XSS(post)

23292-g505ompxvrf.png

此题,使用admin/123456登录,和上题一样,输入xss的payload即可触发xss

存储型XSS

69440-i9e305vww9.png

在留言框中输入xss的payload

91312-uc1e5cmin9.png

点击提交后,即可触发xss

DOM型XSS

如果不了解什么是DOM型XSS,请百度一下

查看源代码,发现使用js进行拼接创建DOM对象,可以使用闭合进行触发XSS

79620-22e0q8i1fyz.png

使用payload为 111' onclick=alert(1)> 即可触发,学过js的童鞋都知道onclick是单击事件,则需要单击该a链接触发xss

04578-tx8yc26hvzb.png

成功触发xss

XSS之盲打

51994-nhzw7l3p2y.png

在输入框中,输入常规的xss的payload

点击点一下提示,可以看到有个后台,地址是/xssblind/admin_login.php登录即可触发xss,所谓盲打就是不知道这个xss是否能够触发我们是看不到的,如果漏洞存在,则管理员中招。

20408-psvg587n78.png

进入后台,成功触发xss

XSS之过滤

04065-h7wn7tqu1wh.png

这次我们用<script>alert(1)</script> 这个payload

30040-2pu0ktldv13.png

发现,并没有触发xss,可看到我们输入的字符是被过滤了

03488-swtegv7wzb.png

使用大小写,即可绕过,成功触发xss

XSS之htmlspecailchars

37892-glsu2pwchkh.png

输入xss的payload之后,发现没有触发xss,而是将值转义成了实体符号

被转换的预定义的字符有:

  • &:转换为&
  • ":转换为"
  • ':转换为成为 '(默认不转换单引号)
  • <:转换为<
  • :转换为>

虽然过滤了关键字符,但是有一个突破口,那就是这个函数并没有把'转义成实体符号

08580-91r6qxln9q.png

payload为#' onclick='alert(1) 即可触发xss

第一个单引号闭合href属性的双引号,第二个单引号闭合href属性的闭合双引号

XSS之href输出

经过测试,双引号单引号都没用了

99547-gof7uq88uwr.png

使用javascript伪协议进行绕过,payload为javascript:alert(1)

XSS之js输出

03577-w5m05nqyfpe.png

输入一个名字后,在源代码中查找,发现在js执行区域内,可直接执行js代码,闭合一下就行了

83673-u9b6wv7w3kd.png

payload为kebi';alert(1);//

CSRF

CSRF(get)

54517-paot3oofxc.png

为了区分两个账号,谷歌浏览器登录lucy账号、火狐浏览器登录kobe账号,然后在抓包这生成CSRF POC生成html文件

61473-y6e1rf567q.png

将生成的CSRF POC的html文件,让kobe账号(火狐浏览器)打开

60546-48ldiaunw3r.png

可以看到,kobe账号信息以及被改为lucy的账号信息

CSRF(post)

27049-wk5kmu44yme.png

这题和上一题差不多,只不过使用了post包去请求的

CSRF(token)

46688-pe52fsaacmr.png

加入了token,无法绕过

SQL注入(SQL-Inject)

数字型注入(post)

28349-6nenqjob1fu.png

查询了数据库,将包发送到Repeater模块进行测试

23444-vt2ncr503ts.png

输入一个单引号,可看到SQL语句报错了

47399-kcyayhrfh8.png

成功注入,显示数据库用户和数据库名称

字符型注入(get)

97097-o66357larj.png

使用单引号测试是否报错,发现输入的值会被变成字符,使用单引号包裹,如果再使用单引号测试,始终有个单引号在你输入的字符后面,导致你无法利用

49992-uf3ucec7ji.png

使用该payload即可注入 admin' union select user(),database()--+ 因为后面有单引号包裹,使用注释符 -- 注释后面字符即可

搜索型注入

89299-fh8cvlnmsp9.png

输入单引号测试,发现%,使用了like语句,闭合%即可绕过

31274-q0qanwufnbd.png

使用payload为 admin%' union select user(),database(),3--+ 成功注入

xx型注入

15299-8fya9qd3vvu.png

使用单引号测试,发现在输入的字符后面加上了 ')

猜测该SQL语句为 select * from user where (username='$username')

64929-j4ln4xzan1.png

闭合 ') 即可注入

使用该payload为 admin') union select user(),database()--+ 成功注入

"insert/update"注入

insert注入

24658-t9icr7j85i.png

这是一个注册功能,注册的话使用的是insert的SQL语句,同样没有过滤也会被注入

88509-0tvun9uyjm4d.png

输入单引号测试,发现SQL语句报错,很明显使用的是insert语句

36693-id8bril4ot.png

使用报错注入即可注入,payload为 ' and extractvalue(1,concat(0x7e,(database()))) and '1'='1

update注入

55224-wm239m7q86e.png

和上面一样使用报错注入函数进行注入

delete注入

67657-8y1stmavazd.png

还是使用报错注入进行注入即可

http header注入

说的很高大上其实就是将http头里面的某个参数值,带入了SQL查询,导致了存在SQL注入

46607-5jutqc4bpsa.png

可以看到,将http头中的user-agent和accept带入了SQL查询,那么没过滤即可注入

24864-wuc731r9io.png

加入单引号测试,发现报错

34037-3x0nke77g9a.png

这个其实就是上面的insert注入,同理使用报错函数进行注入即可

盲注(base on boolian)

42193-ktqj4v9kd3a.png

布尔盲注,逻辑型注入,payload为lili' and length(database())=7--+

盲注(base on time)

61909-7o4bjgqljb5.png

时间盲注,payload为lili' and sleep(3)--+ 如果为真,则页面延迟3秒

07505-56rn707tttk.png

在网络选项里可看到,该页面加载时间3秒钟,说明存在时间盲注

宽字节注入

41352-38o9uy9quz3.png

payload为lili%df' union select 1,user()--+

RCE

exec 'ping'

这个就是命令执行,是可以执行系统命令的

90791-6023hwqsf4k.png

使用管道符 | 执行 ping 192.168.1.1 | whoami 相当于执行了两个命令 但是最终会显示 whoami 命令的结果

exec 'eval'

这个是代码执行,可以执行代码语句的

38839-i1gjxducwyl.png

以php的环境为例,代码执行我这里使用 phpinfo(); 函数演示

88705-9fcd9pzktw6.png

成功执行phpinfo函数

File Inclusion(文件包含)

File Inclusion(local)本地文件包含

64994-43usw76dy4.png

使用这个本地文件包含漏洞配合上传很好使,上传如果被限制了就上传一个txt的php代码文件上去,然后使用本地文件包含进行包含即可

File Inclusion(remote)远程文件包含

50522-op3us73h84r.png

远程文件包含很简单,其实就是使用文件包含远程服务器上的文件并执行

Unsafe Filedownload

49341-ogjo2umfs29.png

可任意下载文件,可下载服务器上的文件

Unsafe Fileupload

client check

77986-wspiewhjwms.png

75777-62phhxo8g02.png

这里使用前端判断文件后缀,只需要抓包后更改为php后缀即可绕过

77524-b23avxwfefb.png

42321-l3kp9afwfqj.png

成功绕过前端判断

MIME type

78376-2s6edtu22cl.png

其实这个和上面一样,将 Content-type 改为图片格式的即可绕过

getimagesize

getimagesize判断了文件有没有图片特征

伪造头部GIF89A

命令 copy 1.jpg/b + 1.asp/a 4.jpg 生成图片马,上传图片马,使用文件包含即可绕过

这里就不演示了

Over Permission

水平越权

水平越权的意思可以修改同等级用户的信息

25798-lo73jyyzhqi.png

更改username参数即可查看到其他用户的账户信息

垂直越权

垂直越权是可以通过普通用户越权到管理层用户

07024-3j08pl1ssae.png

使用admin/123456可登陆到管理员账号

92060-4ar83byypat.png

使用pikachu/000000可登陆到普通用户,该用户只有查看权限

88696-y0dn73amka9.png

将管理员权限的添加用户URL在pikachu普通用户登录的账号下打开,可发现可以添加用户,这样就垂直越权了

目录遍历

72202-c73kay1opc4.png

说起这个,我倒不觉得这是一个目录遍历漏洞,更像是文件包含漏洞

53969-oyyu44b3bk.png

跨目录读取文件

敏感信息泄露

16810-bb1iejdw7r.png

查看源代码,发现程序员将测试账号密码写成了注释

PHP反序列化

18314-9chmjx5e64i.png

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

97621-f6zyi1jn2n.png

即可触发xss

XXE

40994-qaeahezv44o.png

使用xml外部实体读取文件内容,我这里是Mac系统

<?xml version = "1.0"?>
<!DOCTYPE note [
    <!ENTITY hacker SYSTEM "file:///etc/passwd">
]>
<name>&hacker;</name>

URL重定向

81357-fghwdw1uq2k.png

在页面加入参数url,值为跳转地址,则可URL重定向

SSRF

SSRF是由服务器发送的请求,我们可以用来探测内网信息或者其他探测操作

SSRF(curl)

57995-e8ebj99zsdh.png

这个页面是由服务器发送curl请求返回的页面

SSRF(file_get_content)

12889-tzl1hswykf.png

php://filter/read=convert.base64-encode/resource=ssrf_fgc.php 使用php伪协议读取网页源代码,是经过base64加密过后的

26497-vdsx2zrv42.png

进行解密即可获取php源码

添加新评论

电子邮件地址不会被公开,评论内容可能需要管理员审核后显示。