攻防世界 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("\
something wae wrong ! \"); if(
result){ echo "id: ".result-\>id."\"; 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页面,完毕

相关推荐
浩浩测试一下1 小时前
渗透信息收集- Web应用漏洞与指纹信息收集以及情报收集
android·前端·安全·web安全·网络安全·安全架构
移动开发者1号2 小时前
深入理解原子类与CAS无锁编程:原理、实战与优化
android·kotlin
陈卓4102 小时前
MySQL-主从复制&分库分表
android·mysql·adb
移动开发者1号2 小时前
深入理解 ThreadLocal:原理、实战与优化指南
android·kotlin
zhangphil2 小时前
Android PNG/JPG图ARGB_8888/RGB_565‌解码形成Bitmap在物理内存占用大小的简单计算
android
厦门德仔3 小时前
【WPF】WPF(样式)
android·java·wpf
aqi003 小时前
FFmpeg开发笔记(七十二)Linux给FFmpeg集成MPEG-5视频编解码器EVC
android·ffmpeg·音视频·流媒体
Devil枫5 小时前
Kotlin高级特性深度解析
android·开发语言·kotlin
ChinaDragonDreamer5 小时前
Kotlin:2.1.20 的新特性
android·开发语言·kotlin
雨白16 小时前
Jetpack系列(二):Lifecycle与LiveData结合,打造响应式UI
android·android jetpack