文件包含 78-79

web78

没有什么绕过。?file=php://filter/convert.base64-encode/resource=flag.php构建这个伪协议之后可以得到flag,   

首先这是一个file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。

    通过传递这个参数可以得到index.php的源码,下面说说为什么,看到源码中的include函数,这个表示从外部引入php文件并执行,如果执行不成功,就返回文件的源码。

而include的内容是由用户控制的,所以通过我们传递的file参数,是include()函数引入了index.php的base64编码格式,因为是base64编码格式,所以执行不成功,返回源码,所以我们得到了源码的base64格式,解码即可。

之后我们构建flag.php然后因为使base64形式的所以无法成功读取就返回他的源码形式,之后我们在对他的源码形式进行解码就可以得到里面的数据。

web(79)

/?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs/Pg==

<?php system(“tac flag.php”);?>这是后面的含义

【https://blog.csdn.net/cosmoslin/article/details/120695429】这是data协议的。

他将php替换成了三个问号,这里可以使用data协议【数据流封装器,以传递相应格式的数据。可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://流会被当作php文件执行。】来进行大小写绕过这个函数从而使其函数失去作用,然后,就进行include函数,会运行其中的函数,就是包含和运行。

PHP Include 文件include相关介绍,

还有另一种的形式是?file=data://text/plain,<?=eval($_POST[1]);?>

post:   1=system(“tac flag.php”);

在C#中读取和修改包含密码或其他敏感信息的txt文件时,你需要确保安全地处理这些数据。通常不会直接将明文密码存储在文本文件中,因为这会增加泄露的风险。但是,如果你确实需要临时存储加密过的密码或者安全的哈希值,这里是一个基本的例子展示如何使用`System.Security.Cryptography`来加密和解密数据: 首先,假设你有一个简单的函数用于加密字符串: ```csharp using System.IO; using System.Security.Cryptography; using System.Text; public static class SecureTextHelper { public static string Encrypt(string clearText, string key) { byte[] encryptedBytes = null; using (Aes aes = Aes.Create()) { Rfc2898DeriveBytes rdb = new Rfc2898DeriveBytes(key, new byte[] { 0x4a, 0x65, 0x78, 0x70, 0x6c, 0x65, 0x20, 0x4b, 0x65, 0x79 }); aes.Key = rdb.GetBytes(aes.KeySize / 8); aes.IV = rdb.GetBytes(aes.BlockSize / 8); ICryptoTransform encryptor = aes.CreateEncryptor(); using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { using (StreamWriter sw = new StreamWriter(cs)) { sw.Write(clearText); } encryptedBytes = ms.ToArray(); } } } return Convert.ToBase64String(encryptedBytes); } // 解密函数同理 public static string Decrypt(string encryptedText, string key) { // 使用相同的加密过程和key解密 // ... } } ``` 然后你可以这样读取和处理文件(假设密码在一行内): ```csharp string filePath = "passwords.txt"; string password = File.ReadAllText(filePath); // 加密密码 string encryptedPassword = SecureTextHelper.Encrypt(password, "yourSecreteKey"); // 将加密后的密码写回文件,注意这里是示例,实际生产环境中应避免写回原文件 File.WriteAllText(filePath, encryptedPassword); // 当需要使用时,再从文件读取并解密 string decryptedPassword = SecureTextHelper.Decrypt(File.ReadAllText(filePath), "yourSecreteKey"); // 确保解密正确,这里仅做演示,不要直接使用在生产环境中 Console.WriteLine($"Decrypted password: {decryptedPassword}"); ``` 记住,上述代码只提供了一个基础的示例,实际应用中,尤其是处理密码这类敏感信息,你应该使用更复杂的加密算法,并采用安全的方式来存储和管理密钥。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值