考点:1.代码审计也要用御剑扫描后台
2.查看phpmyadmin变量 secure file priv 值为空 说明可以写入一句话
3.还有data://协议
data://伪协议
php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码
使用方法:data://text/plain;base64,xxxx(base64编码后的数据)
http://111.198.29.45:47062/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2B (注意编码后的+号要URL编码)
查看源码得到flag
这道题和一般的题不一样,一般的代码审计是输入变量,让这个变量
1.满足条件一
2.满足条件二
通常这两个条件是冲突的
但是这一题不是这样 新知识—-写代码审计也要走三步骤(1.F12 2.御剑 3.抓包)
题目:
![](https://cdn.nlark.com/yuque/0/2020/png/573149/1579154731019-4eaf7a96-7934-4ec5-abb6-3459ddf99d81.png)
这个F12并没有发现什么有价值的信息:
于是用御剑跑一下:
是可以得到一些有价值的信息的;phpinfo()函数可以看到绝对路径,还可以进到phpmyadmin界面
进入phpmyadmin里:
这个时候需要密码,那这个时候可以用bp的爆破强行爆破出来,然而这题比较不走心,压根就没有密码,直接执行登录。
这时候查看phpmyadmin变量 secure file priv
执行语句:
show global variables like 'secure_file_priv';
这个变量没有设置,说明可以上传一句话(这里还不是很理解)
secure_file_priv的值为null,那么secure_file_priv这里都有什么设置呢
- secure_file_priv为null 表示不允许导入导出
- secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
- secure_file_priv没有设置时,则表示没有任何限制
https://blog.csdn.net/Aaron_Miller/article/details/105864128
开始抓包(网上有人用菜刀,可惜我不会用)
也没啥特殊的地方 乖乖的代码审计:
得到一个变量page
page这个东西要多个心眼,像file=一样,有文件包含漏洞
百度了一下strstr函数发现它对大小写十分敏感,所以我们可以用大写来进行绕过,这里简单普及一下这个函数的用法,
strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。
结合三个 一个是可以上传一句话,一个是文件包含漏洞,一个是strstr挂不是故意的绕过,那意思说我可以构建一个
在来一个读文件:
难呐