热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

curlopt_ssl_verifypeer后https还是验证不过_2020CNAS能力验证小总结

喜欢就关注我们吧!提前祝大家中秋节加国庆节快乐每年的这个时候,都要迎来三所的实验室能力验证,今年也不例外。在毫无准备的情况下,
3eec91bf11c2ebb826e72214e5340088.gif

喜欢就关注我们吧!

    e549b2452e6b6ed4b07673f0be7c199d.png

提前祝大家中秋节加国庆节快乐fde36ef67afcaad6930174800474f908.png

    每年的这个时候,都要迎来三所的实验室能力验证,今年也不例外。在毫无准备的情况下,下载了服务器镜像文件,然后等待当天的答题。内心可以说毫无波澜。(因为觉得题目可能都是些纯理论的东西。。)

    但是显然我错了,拿到解压密码,加载镜像文件后,再对着看了看题目。这家伙,真的有意思。除了基本的取证考察项目外,居然还掺杂了个逆向题。看着答题首页的倒计时,让我觉得有种在参加CTF比赛的错觉。。不过,总体来说还是挺不错的。

    这里边有几个我觉得挺有意思的小技巧,分享给大家。

    TIPS1,通常在取证过程中,复现涉案网站是第一步。然后查看网站后台权限和用户情况以及功能等等。但是,如果数据库的管理员密码经过MD5加密且无法解密,使用数据库命令替换密码又不生效的情况下。(我也不知道为什么,反正我当时就不行)。就需要找到相关的登陆验证的源码,进行修改。

这里的代码是THINKPHP的,直接找到Controller文件夹,找到相关文件PublicController.class.php,定位验证函数:

if($authInfo['password'] != pwdHash($password)) { $this->error(L('密码错误')); exit; }

e892e3dd3a837f4396138535af082910.png

输入密码不等于md5解密后的密码,直接输出错误并跳出当前函数。

$authInfo['password'] != pwdHash($password)

判断条件的结果设置为错误即可绕过验证。

$authInfo[&#39;password&#39;]<0

这里直接简单修改成,即可实现输入任意密码登陆。

登陆后台后&#xff0c;还有个二级密码验证&#xff0c;同理的方法绕过。

TIPS2&#xff0c;从整体思路上解答这个题&#xff1a;

    主要是最后一题&#xff0c;相对来说还是比较有难度的&#xff0c;其他人也都发了解题过程。我就简单说下我的解题过程&#xff1a;

题目是&#xff1a;

嫌疑人使用专用程序下载远端文件&#xff0c;请对该程序进行分析&#xff0c;请列出下载程序中登录文件服务器的密码 。

    第一步&#xff0c;查找到底是什么程序&#xff0c;看了看history的日志&#xff0c;发现有个可以程序PMDUMP&#xff0c;嫌疑人给他了一个755权限&#xff0c;然后运行了。这个很可疑。搜了下全盘没找到&#xff0c;使用取证大师给他恢复出来。

    然后导出到本地KALI虚拟机下进行查看。

    常规的话&#xff0c;使用binwalk看下文件的基本结构&#xff0c;初步判断下是什么语言环境写的。

478c6f20a260182bea1a08aba654b0b9.png

查完之后&#xff0c;发现是个ELF文件&#xff0c;且被一种PTP的加固了。这样的话直接拖进IDA应该就没法看源码。

掏出之前搜集的工具&#xff0c;Detect-It-Easy 3.0。

下载地址&#xff1a;https://github.com/horsicq/DIE-engine/releases

查看具体是什么加密方式&#xff1a;

b5997760bc248484d4aa396a0ac4206e.png

接着发现是个UPX壳&#xff0c;然后尝试直接用upx脱壳&#xff0c;结果失败了。

b9434a44128b2f0091ac9fb0279851fa.png

很显然&#xff0c;虽然是Upx壳&#xff0c;但是肯定被修改了&#xff0c;只需要知道修改了哪里。

首先&#xff0c;linux下使用strings对PMDUMP进行&#39;UPX&#39;字符串搜索&#xff1a;strings PMDUMP| grep &#39;UPX&#39;。

041add4b93199be2e2e50817c3b2d035.png

因为通过binwalk&#xff0c;有一个标注&#xff1a;Copyright (C) 1996-2020 the PTP Team. All Rights Reserved.  接着&#xff0c;尝试搜索字符&#39;PTP&#39;。

5f12ab72ba024c59504ddb968b05d6db.png

再然后&#xff0c;随便找个ELF文件用upx加密。

fd16efe58cd91b0289bbc3a8d35e69de.png

再用string命令对生成号的文件进行检索。

4a4a00e2308efacf4b9755f8b97c3ba0.png

对比刚刚对PMDUMP的截图&#xff0c;可以发现&#xff0c;PTP替换了UPX字符。

所以&#xff0c;使用C32AM软件打开PMDUMP文件&#xff0c;替换PTP为UPX。

187f5b3f2ba280bc85c4766a7039b494.png

之后&#xff0c;使用UPX进行脱壳。

1357acd31620cbdbe05e6a47d2262b20.png

脱壳后&#xff0c;再用binwalk查看&#xff1a;

946154d1fba08b3d81f3896bcd51d248.png

可以看到已经脱掉UPX壳&#xff0c;接下来使用IDA打开这个ELF文件&#xff0c;直接F5反编译。

然后查找相关的登陆函数&#xff0c;最终找到&#xff1a;

52ea183db97c0141a0ddfd618dfb4f51.png

能够知道用户名user1为nwkv&#xff0c;密码pass1为-/-/~|&#64;_k|nk。

然后就是找加密算法&#xff1a;

81b1e29f8a7bc61cc93a6078f4863ffd.png

之后就简单了&#xff0c;正常按照算法写个Python的小脚本&#xff0c;然后跑出来就行了。

总的来说&#xff0c;这次能力验证题出的还是挺有意思的&#xff0c;基本都围绕着真实取证环境构思的题目。基于这个思路&#xff0c;可能明年的取证题会更有意思&#xff0c;表示期待。

2c77cea58877f0171ec3c7d0f4ee7c87.png

6998b06378eedd36988433e43a3aba0e.png


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
author-avatar
勇_俊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有