一.知识点
1.数组绕过
原理
数组绕过(Array bypass)指的是通过特定的攻击技术,从一组数组中获取特定的值或变量,来绕过某种限制或检查。攻击者通常会使用一些特殊的字符或语法来对数组进行操作,以达到绕过目的。
intval($num) ?num[]=1
2.%0a绕过
/i
匹配大小写,/m
匹配多行数据。/^php$/m
这种形式能用%0a
绕过。
if(preg_match('/^php$/im', $a)){
if(preg_match('/^php$/i', $a)
?cmd=%0aphp
#还有一种方式,但是不太理解
?cmd=php%0a%0a
3.intval函数应用
intval(mixed$var[,int $base =10]):int
可以用以下方式进行绕过:
intval('4476.0')===4476 小数点
intval('+4476.0')===4476 正负号
intval('4476e0')===4476 科学计数法
intval('0x117c')===4476 16进制
intval('010574')===4476 8进制
intval(' 010574')===4476 8进制+空格
PHP特性之CTF中常见的PHP绕过
4.命令执行函数绕过:exec()函数
exec() // 只执行无回显
用tac /fl\ag |tee 1.txt 将返回的内容写入1.txt
命令执行各种绕过总结
5.Robot.txt
1)含义
robots.txt是一个协议,我们可以把它理解为一个网站的"管家",它会告诉搜索引擎哪些页面可以访问,哪些页面不能访问。也可以规定哪些搜索引擎可以访问我们的网站而哪些搜索引擎不能爬取我们网站的信息等等,是网站管理者指定的"君子协议"。
2)作用
屏蔽网站内的死链接。
屏蔽搜索引擎蜘蛛抓取站点内重复内容和页面。
阻止搜索引擎索引网站隐私性的内容。
3)内容
User-agent: 搜索机器人的名称
若User-agent是*,则表示允许所有的搜索机器人访问该站点下的所有文件。在"robots.txt"文件中,"User-agent:*"这样的记录只能有一条。
Disallow: 不允许搜索机器人访问的地址
Allow: 允许搜索机器人访问的地址
Disallow和Allow后面跟的是地址,这个URL可以是一条完整的路径,也可以是部分的,地址的描述格式符合正则表达式(regex)的规则。特别注意的是Disallow与Allow行的顺序是有意义的,robot会根据第一个匹配成功的Allow或Disallow行确定是否访问某个URL。
禁止所有搜索引擎访问网站的任何部分:
User-agent: *
Disallow: /
robots.txt详解
二.实例
1.Gentle_sister(web)
先点击点我看看,没发现什么,返回看源码,发现是php伪协议,用数组绕过进行传参,得到flag
3.Rceeee(web)
点开之后发现有许多禁用,逐个绕过,得到flag
4.一个朴实无华的界面(Web)
输入发现是静态网站,查看爬虫协议,接着访问/0e1G7.php,发现???被隐藏,是php伪协议
写payload,
G7=php://filter/convert.iconv.utf-8.utf-7/resource=flag.php
G7=php://filter/convert.iconv.ucs-2be.ucs-2le/resource=flag.php
G7=php://filter/read=convert.Base64-encode/resource=flag.php
即得出flag