攻防世界 ics-07

点击之后发现有个项目管理能进,点进去,点击看到源码,如下三段

复制代码

<?php session_start(); if (!isset(_GET\[page\])) { show_source(__FILE__); die(); } if (isset(_GET[page]) && $_GET[page] != 'index.php') { include('flag.php'); }else { header('Location: ?page=flag.php'); } ?>

复制代码

<?php if ($_SESSION['admin']) { $con = $_POST['con']; $file = $_POST['file']; filename = "backup/".file; if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){ die("Bad file extension"); }else{ chdir('uploaded'); f = fopen(filename, 'w'); fwrite($f, con); fclose(f); } } ?>

复制代码

<?php if (isset(_GET\[id\]) \&\& floatval(_GET[id]) !== '1' && substr($_GET[id], -1) === '9') { include 'config.php'; id = mysql_real_escape_string(_GET[id]); sql="select \* from cetc007.user where id='id'"; result = mysql_query(sql); result = mysql_fetch_object(result); } else { result = False; die(); } if(!result)die("<br >something wae wrong ! <br>"); if(result){ echo "id: ".result->id."</br>"; echo "name:".$result->user."</br>"; $_SESSION['admin'] = True; } ?>

大概思路是在id满足第三段代码的情况下,使$_SESSION['admin'] = True。然后在以POST方式提供con和file,当file满足条件时,会将con的内容写入uploaded /backup /filename中。在在第一段中包含此文件,可以得到flag.php

先在view-source.php?page=flag.php页面,如下图,输入1' or '9'='9,满足了第三段代码的条件

构造以下请求

在/uploaded/backup/aaa.txt确实存在,证明攻击奏效,下面主要是如何绕过第二段代码。

最终代码如下

然后菜刀链接,找到flag页面,完毕

相关推荐
猿小帅011 小时前
androidnetflix手机版遥控器操作
android·framework
l and1 小时前
Android Http-server 本地 web 服务
android
CYRUS STUDIO2 小时前
使用 AndroidNativeEmu 调用 JNI 函数
android·汇编·arm开发·arm·逆向·jni
消失的旧时光-19432 小时前
Android 串口通信
android
风浅月明2 小时前
[Android]使用WorkManager循环执行任务
android
_extraordinary_3 小时前
Linux权限(一)
android·linux·excel
人生!?4 小时前
给小米/红米手机root(工具基本为官方工具)——KernelSU篇
android·linux·智能手机
古苏5 小时前
Android输入事件传递流程系统源码级解析
android
生产队队长7 小时前
ThinkPHP:配置Redis并使用
android·数据库·redis
踏雪羽翼7 小时前
android 差值器的使用
android