PORT51
![](https://img.haomeiwen.com/i8826796/7be0ea268b766628.png)
该题提示我们需要使用51端口进入该站点
然而此站为
http://web.jarvisoj.com:32770/
它的端口已经是确定了的,所以只能更改我们的port了。本来用的是kali虚拟机,不能通过外网,命令如下
curl --local-port 51 http://web.jarvisoj.com:32770/
自己试试,我就懒得弄win上的curl命令了
LOCALHOST
![](https://img.haomeiwen.com/i8826796/0d78b8725f9a4e2b.png)
这道题跟上面的很像啊,道理还是一样的,就是通过localhost来访问该站点咯
![](https://img.haomeiwen.com/i8826796/1016d8fa356c6d1e.png)
可以瞅瞅
Login
提示说要通过获得密码才能得到flag
第一个念头就是用burpsuit。。得到了网站的response
![](https://img.haomeiwen.com/i8826796/d84f786fbb37992f.png)
这里可以看到一点小提示:
Hint: "select * from
adminwhere password='".md5($pass,true)."'"
说明可以构造:select * from
admin
where password='"or 1=1 这样的绕过语句so我们要找到一个password,这个password经过md5加密后可以变成类似"or 1=1 之类的语句绕过
password:ffifdyop
这种题还是在别的地方见过几次的,都是一样的payload
![](https://img.haomeiwen.com/i8826796/b9fda7c4140d3307.png)
神盾局的秘密
F12里面啥都没,就一段图片的连接,刚开始没注意,还以为问题出在图片里隐写了,后来也没看出来,才想到了图片链接的问题
http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLmpwZw==
这个img后面肯定是base64了,解密看一下:http://web.jarvisoj.com:32768/showimg.php?img=shield.jpg
我们把showing.php
base64编码一下,得到c2hvd2ltZy5waHA=,然后放到"img= "后面,页面爆出php代码
![](https://img.haomeiwen.com/i8826796/ad2573995ab13cb5.png)
由此发现,img参数可以打开任意文件,那么我们打开index.php文件,查看一下里面除了那个白头鹰还有什么内容。
http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw
![](https://img.haomeiwen.com/i8826796/a061c2e8e511d2bc.png)
在这里可以看到,又有一层php文件,我们跟着打开shield.php
http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==
![](https://img.haomeiwen.com/i8826796/2f0666a8e3db955d.png)
![](https://img.haomeiwen.com/i8826796/52ad59f17729890d.png)
结果发现并不是。。
仔细看看前面的php,我们可以利用通过class传参到pctf.php得到内容。
![](https://img.haomeiwen.com/i8826796/85b722ac8401ca32.png)
在index.php中传参得到了flag
![](https://img.haomeiwen.com/i8826796/5e6057c09410cbea.png)
IN A Mess
这个是一点办法都没有,一开始还以为问题出在id上,试了几个id参数都一样。然后burpsuit抓包也没看出啥东西来。后来才知道是用phps来代码审计
![](https://img.haomeiwen.com/i8826796/5cc194d6e97a331f.png)
通过
if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
来获得flag;eregi()函数在一个字符串搜索指定的模式的字符串。
在这里我们需要传递的data为"1112 is a nice lab!" a参数由于设置了stripos($a,'.')限制,只能用php伪协议,这里附带一个为协议的相关知识:http://blog.csdn.net/Ni9htMar3/article/details/69812306?locationNum=2&fps=1;
php弱类型相等($id==0)>>id=a ;
strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
这里要求b参数长度大于5,and第一个字符为4,and第一个字符不等于4. 可以用00截断绕过:b=%004123456如图:
![](https://img.haomeiwen.com/i8826796/de7163c7ec73a5ad.png)
让我们继续
出现了hi666
![](https://img.haomeiwen.com/i8826796/087ab1c81db63f16.png)
![](https://img.haomeiwen.com/i8826796/7e163786272479d2.png)
报出了这个sql语句,可能是想让我们sql注入,毕竟phps源码没了,读不到文件了。
![](https://img.haomeiwen.com/i8826796/8e79d26ba99fa978.png)
继续,爆出显示位
![](https://img.haomeiwen.com/i8826796/262362236f0e60f0.png)
![](https://img.haomeiwen.com/i8826796/a20f1f39d7602214.png)
不断得到库test 表content 字段 id,context,title 这后面就简单一点了
![](https://img.haomeiwen.com/i8826796/496ccf5eae04c3f8.png)
RE?
flag在管理员手里
![](https://img.haomeiwen.com/i8826796/63d06b4f748e3e67.png)
网友评论