无字母数字 RCE 的总结
前言最近正在复习关于 无参RCE 以及 无字母RCE 相关的 CTF 题目, 之前也有做过类似的题目,但是都没有做总结,于是最近准备系统的对 CTFWeb 的知识点进行总结。
主要参考资料为 P神 2017 年发布的文章:
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html
问题11234<?phpif(!preg_match('/[a-z0-9]/is',$_GET['shell'])) { eval($_GET['shell']);}
如果把数字和字母都 ban 了我们该如何进行 RCE 呢?下面是 P神 的思考,x1ong 只是进行学习并做记录。
思路首先我们明确思路,我们的核心目的就是不使用字母、数字,去构造诸如 assert、system 函数的字符串,然后利用动态执行的方法进行调用。
动态调用:
12345<?php $a = 'assert';$a('phpin ...
GXYCTF2019 禁止套娃
信息收集使用目录扫描工具 dirsearch 对其进行扫描,发现存在 .git 目录。
猜测可能是 git 泄露,使用 GitHacker 工具尝试获取其源码信息。
分析得到源码,如下:
123456789101112131415161718192021222324<?phpinclude "flag.php";echo "flag在哪里呢?<br>";if(isset($_GET['exp'])){ if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) { if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) { if (!preg_match( ...
Python 的 HackerRequest 模块学习记录
模块简介HackRequests 是基于Python3.x的一个给黑客们使用的 http 底层网络库。如果你需要一个不那么臃肿而且像 requests 一样优雅的设计,并且提供底层请求包/返回包原文来方便你进行下一步分析,如果你使用Burp Suite,可以将原始报文直接复制重放,对于大量的 HTTP 请求,hack-requests 线程池也能帮你实现最快速的响应。
像 requests 一样好用的设计
提供接口获得底层请求包、返回包原文,方便下一步分析
支持发送 HTTP 原始报文,支持从 Burp Suite 等抓包软件中重放
hack-requests 是单文件模块,可方便移植到其他项目中。
模块安装1pip install HackRequests
仅支持 Python3.x
特征不需要关注参数类型在requests模块中,为了方便使用,header、cookie、post等信息都是以字典形式传参,但对于黑客来说,常常截获到的是一个文本,手动转换成字典费时费力。但在HackRequests中,这些参数你既可以传入一个字典,也可以传入一个文本,程序会自动识别并转 ...
CTF 中的随机数问题
随机数问题前言在 CTF 比赛中,有些时候可能会考一些关于 随机数的问题,其实考察的是两个函数,即 mt_rand() 和 mt_srand()。
前者用于生成随机数,后者则用于给随机数发生器播种。
函数的认识mt_rand()mt_rand — 通过梅森旋转(Mersenne Twister)随机数生成器生成随机值
参数
作用
min
可选的、返回的最小值(默认:0)
max
可选的、返回的最大值(默认:mt_getrandmax())
具体参考:https://www.php.net/manual/zh/function.mt-rand.php
示例:
1234567<?php echo mt_rand() . " ";echo mt_rand() . " ";echo mt_rand() . " ";echo mt_rand() . " ";echo mt_rand() . " ";?>
程序运行结果:
可以看到,每次程序运行得到的结果都不一样, ...
CTF 中的变量覆盖考点
变量覆盖定义变量覆盖指的是可以用我们的传参值替换程序原有的变量值。
变量覆盖的场景能造成变量覆盖的相关函数:
extract()
parse_str()
$$
mb_parse_str()
import_request_variables() deprecated in >= PHP 5.4.0
array_merge()
register_globals
相关函数的认识extractextract — 从数组中将变量导入到当前的符号表
参数
作用
array
一个关联数组,此函数会将数组的键名作为变量名,相应的值作为变量的值。 对每个键/值对都会在当前的符号表中建立变量
other
其他参数请参考官方文档
详细请参考:https://www.php.net/manual/zh/function.extract.php
示例:
123456789<?php $arr = array('name' => 'x1ong', 'age' => '20' ...
CTF 中的弱类型比较和 MD5 绕过
PHP 中的弱类型比较
=== 在进行比较的时候,会先判断两边的数据类型是否相等,再进行比较。
== 在进行比较的时候,会先将字符串类型转换成相同,再比较。
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换数值并且比较按照数值来进行。
12345678<?php var_dump("admin" == 0); // true var_dump("1admin" == 1); // true var_dump("admin1" == 1); // falsevar_dump("admin1" == 0); // truevar_dump("0e123456" == "0e4456789");?>// 以上代码可自行测试
当一个字符串被当做一个数值来取值,其结果和类型如下:
如果该字符串没有包含". ", "e", "E" 并且其数值在整型的范围之内,该 ...
CCNA 学习记录 - 结课综合实验
距离寒假结束还有不到16天,如今,CCNA 的课程全部结束了,对于自己来说,收获很大,个人认为,学习网安还是需要了解一些交换路由基础的。明天继续学习 安全相关的内容 加油 X1ong 。
网络拓扑
网络需求
总部网络和杭州办事处网络都通过 o_route 做 NAT 转换实现上网。
出口路由器 o_route 与互联网路由器做主备路由
总部网关部署在核心交换机上、杭州办事处网关部署在出口路由上。
其他需求请根据拓扑实现。
需求实现设置主机名JR-1123456Switch>enSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)# Switch(config)#hostname 1-JR1-JR(config)#
JR-21234567Switch>Switch>enSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(conf ...
CCNA 学习记录 - NAT 转换
引言 随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术的使用是解决这个问题的主要技术手段。
网络地址转换技术NAT(Network Address Translation)主要用于实现位于内部网络的主机访问外部网络的功能。当局域网内的主机需要访问外部网络时,通过NAT技术可以将其私网地址转换为公网地址,并且多个私网用户可以共用一个公网地址,这样既可保证网络互通,又节省了公网地址。
应用场景
企业或家庭所使用的网络为私有网络,使用的是私有地址;运营商维护的网络为公共网络,使用的是公有地址。私有地址不能在公网中路由。NAT一般部署在连接内网和外网的网关设备上。
静态 NAT
静态 NAT 实现了私有地址和公有地址的一对一映射。一个公网IP只会分配给唯一且固定的内网主机。
动态 NAT
动态NAT基于地址池来实现私有地址和公有地址的转换。
PAT
端口地址转换(PAT,Port Address ...
CCNA 学习记录 - ACL 访问控制列表
引言企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定。访问控制列表 ACL(Access Control List)可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。
ACL 应用场景
假设我们不想让 192.168.1.0/24 网段的主机访问到 服务器 A 只允许其网段访问到互联网,只需要在 路由器上 配置 ACL 即可。同时,如果想让 192.168.2.0/24 不能访问互联网,只能访问服务器区域,也能通过 ACL 实现。
ACL 是一个基于包过滤的规则,ACL可以通过定义规则来允许或拒绝流量的通过。
ACL可以根据需求来定义过滤的条件以及匹配条件后所执行的动作。
ACL 的分类
分类
编号范围
参数
基本ACL
1-99
源IP地址等
拓展ACL
100-199
源IP地址、目的IP地址、协议、 源端口、目的端口等
相关配置网络拓扑
目前,是已实现全网互通。
基础 ACL基础 ACL 编号为 1-99。
需求: ...
CCNA 学习记录 - 小型网络配置实例
不知不觉,寒假已经过半,距离开学还有20多天,再过几天也是除夕了, 回顾上半个寒假主要是在学习 CCNA 以及写了两个web 靶场。弹指一挥间,提前祝大家新年快乐。
小型网络配置实例需求
网络规划经过规划,标记如下:
配置主机名SW112345Switch>enSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)#hostname SW1SW1(config)#
SW212345Switch>enSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)#hostname SW2SW2(config)#
SW312345Switch>enSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)#ho ...