ichigo ichie-第二期-rev-thanks4allthefish
题目介绍来自5月份的一场CTF比赛,这次报了两场,第一晚另外一场在坐牢就跑来打SpaceHeroesCTF了先上本次的战绩吧,逆向题其他的感觉没什么好讲的,来说说这道比较有意思的题。
反转啦!—逆向分析拿到一个文件,第一时间要做的就是对这个文件进行分析,看看它是32位的程序还是64位的程序吧。
12$ file thanks4allthefish thanks4allthefish: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=2e14332fc6eef51cfee511f46848f5ec23b02efc, for GNU/Linux 4.4.0, not stripped
好吧,这是一个x86-64的程序,我们直接上IDA反汇编出它。来到main函数
1234567891011121314151617181920212223242526272829303132333 ...
ichigo ichie-第一期-web-HTB-Toxic
导言
いちごいちえ
ichigo ichie(いちごいちえ),"一期一会"的概念源自于茶道的精神,茶道强调的是以细致入微的态度对待每一次茶会,每次茶会都是独特的,与他人相遇的机会是有限的,所以要以全身心的专注和感恩的心态来对待。这个概念也可以应用到生活的其他方面,提醒我们要珍惜与他人的相遇、体验和交流,不论是工作中的会议、与朋友的聚会还是与家人的相处,都应该以珍贵和特殊的心态去对待,体验当下的美好。而在CTF中,我相信每个挑战和每次比赛都是独特且珍贵的经历。本篇文章是这个栏目的第一期,我相信每个人都有自己独特的CTF之旅,而每一次挑战都是一次成长和学习的机会。我希望能够鼓励和激励大家不断探索、学习和成长,在这个充满挑战和创造力的领域中取得更多的成就。
解题过程代码审计来自HTB上的一道Web题,我们先对其进行代码审计
查看源码我们可以发现这是一个PHP的Challenge,代码很少,我们只需要审计index.php和models/PageModel.php这两个文件即可。
12345678910111213141516.├── index.html├── index.php ...
从BucketCTF2023的一道PWN题来谈谈ASLR。
本次CTF是我有史以来最高强度打的一次CTF,题目质量感觉一般,但这道题目我觉得是值得一提的。
题目WP-Never Called程序保护分析1234567Arch: i386-32-littleRELRO: Full RELROStack: No canary foundNX: NX disabledPIE: PIE enabledRWX: Has RWX segments
老样子先看保护,开启了PIE和RELRO,开启PIE后,我们无法通过IDA静态调试出程序的地址,因为程序的Base Address是每次都会改变的,但是题目有说明,服务器上关闭了ASLR。这就意味着PIE只会干扰我们对程序进行静态分析,我们只需要把我们环境中的ASLR也给关闭,然后动态调试,泄露出程序的Base Address,我们就能得到程序中所有东西的地址。
程序静态分析在程序中,我们可以看到一个很明显的栈溢出漏洞:
12345678int getMessage(){ char s[54]; // [esp+Eh] [ebp-3Ah] BYREF ...
HTB-CA2023-PWN-相关ROP题目
前言ROP(Return-Oriented Programming),通常建立在栈溢出(stack overflow)的基础上,将栈上的数据覆盖为指向代码段中的一系列指令的地址,然后通过执行这些指令来控制程序的执行流程,ROP 的基本原理是,利用程序中已有的一些代码片段,比如函数调用、返回指令等,来构造一些可控制的代码片段,然后通过一系列的跳转指令将它们组合起来,形成一个完整的攻击代码。没错,它就像拼图一样,找齐我们需要的拼图,然后pwn掉它吧!
HTB-CA2023—PWN pwn_labyrinth 基本ROP程序分析来自这次比赛的一道PWN题,老样子,先让我们看看它开启了什么保护:
1234567Arch: amd64-64-little RELRO: Full RELRO //不能覆盖GOT Stack: No canary found //没有栈堆保护 NX: NX enabled //栈堆无法执行 PIE: No PIE (0x400000) //address不变 ...
探究操作系统中应用程序的执行环境 (以Rust在riscv64gc平台为例子)(上篇)
导言在读本文前,你需要知道的是,你不需要完全读懂本文的代码部分,重点在于理解操作系统中应用程序的执行环境结构。在上个学期,我们已经学习了《计算机操作系统》这门课程,在这门课程里,我们主要学习的是操作系统的各种调度算法,包括实验也是编写某些调度算法的代码。而在计算机领域,操作系统扮演着一个十分重要的角色,它作为计算机硬件和用户应用程序之间的重要中介,操作系统为应用程序提供了执行环境。在我们的生活中,我们使用手机看视频,使用电脑查阅资料,用的是一个又一个的应用程序,而这些应用程序能在我们的硬件设备上运行,中间到底发生了些什么呢?本文将会围绕一个简单的 “Hello World!”程序,讲述计算机操作系统的原理和作用,为大家提供一个更为全面的视角。
应用程序运行发生了什么?以最简单的“hello world!”程序为例“hello world!”这个程序相信是大家编写的第一个程序,而在我们第一次看到电脑中的terminal弹出“hello world!”时,是否有想过在运行时,计算机内发生了些什么呢?我们这里以rust为例。
12345678SU15VTE@SU15VTE:~/Desktop ...