## [WUSTCTF2020]朴实无华### 1!

题目首页

没什么思路,目录扫描到了robots.txt文件看看有什么

接着访问

一步一步走

先介绍:

# PHP intval() 函数
​
**intval()** 函数用于获取变量的整数值。
​
**intval()** 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。 intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。
    
    
strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE。
​
注释:该函数是二进制安全的。
​
注释:该函数是区分大小写的。如需进行不区分大小写的搜索,请使用 stristr() 函数
    
 
str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。
​
该函数必须遵循下列规则:
​
如果搜索的字符串是一个数组,那么它将返回一个数组。
如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对某个数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余的元素将用空字符串进行替换。
如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。

这里说明一下如何绕过:首先num的intval函数在输入值为23e2时候会解析为23,而num+1就会进行运算,先还原成整数2300+1=2301>2021,成功绕过,,,第二个md5加密后还等于他自己,则0e215962017加密后还是0exxxxx,都解析为0,,,绕过空白字符可以参考文章(命令执行绕过大全 - 知乎 (zhihu.com))常见的绕过空白字符的有:

${IFS},
${IFS}$9,#$9可改成$加其他数字。
{cat,flag.php},用,实现了空格;指令中的{}通配符,shell会先把{}的内容按照解释方式翻译成一个或多个参数,再执行该含有多参数的指令。
在 php 中,当字符串 以0e开头时,会被 php 识别成科学计数法,结果均为0,因此在比较两个以 `0e` 开头的字符串时,无论后面的字符时是什么,比较结果都为 True。

(参考文章:PHP md5 相等绕过 - Ainsliaea - 博客园 (cnblogs.com)

构造如下payload:

?num=23e2&md5=0e215962017&get_flag=ls${IFS}$9/

根据文件提示查看该目录:/var/www/html

?num=23e2&md5=0e215962017&get_flag=ls${IFS}$9/var/www/html

这应该是flag文件

?num=23e2&md5=0e215962017&get_flag=tac${IFS}$9/var/www/html/fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值