PORT51
该题提示我们需要使用51端口进入该站点
然而此站为
http://web.jarvisoj.com:32770/
它的端口已经是确定了的,所以只能更改我们的port了。本来用的是kali虚拟机,不能通过外网,命令如下
curl --local-port 51 http://web.jarvisoj.com:32770/
自己试试,我就懒得弄win上的curl命令了
LOCALHOST
这道题跟上面的很像啊,道理还是一样的,就是通过localhost来访问该站点咯
可以瞅瞅
Login
提示说要通过获得密码才能得到flag
第一个念头就是用burpsuit。。得到了网站的response
这里可以看到一点小提示:
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
神盾局的秘密
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代码
由此发现,img参数可以打开任意文件,那么我们打开index.php文件,查看一下里面除了那个白头鹰还有什么内容。
http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw
在这里可以看到,又有一层php文件,我们跟着打开shield.php
http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==
结果发现并不是。。
仔细看看前面的php,我们可以利用通过class传参到pctf.php得到内容。
在index.php中传参得到了flag
IN A Mess
这个是一点办法都没有,一开始还以为问题出在id上,试了几个id参数都一样。然后burpsuit抓包也没看出啥东西来。后来才知道是用phps来代码审计
通过
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如图:
让我们继续
出现了hi666
报出了这个sql语句,可能是想让我们sql注入,毕竟phps源码没了,读不到文件了。
继续,爆出显示位
不断得到库test 表content 字段 id,context,title 这后面就简单一点了
RE?
flag在管理员手里