Web学习第二周

web学习报告2

(1):继续进行php基础语言学习;
对HTML基础进行练习,开始学习css,JavaScript
(2):web做题解析
1.伪协议1
在这里插入图片描述
注释:a.highlight_file() 函数对文件进行语法高亮显示。
本函数通过使用 PHP 语法高亮程序中定义的颜色,输出或返回包含在 filename 中的代码的语法高亮版本。

许多服务器被配置为对带有 phps 后缀的文件进行自动高亮处理。例如,在查看 example.phps 时,将显示该文件被语法高亮显示的源代码。要启用该功能,请把下面这一行添加到 httpd.conf:
b.preg_match()函数:正则表达式的运用;一旦含有引号中的东西就会被过滤,在本题中对其分析可以知道区分大小写:即输入中可以用大写的绕过此函数(如:php可以写为Php即可绕过)
c:include表示是include类型的漏洞问题
对其分析可以知道可以用大小写,base64绕过。本题用base64绕过得到一串字符之后用base64解码即可找到flag
在这里插入图片描述

2.伪协议2
在这里插入图片描述
注释:和上一题差不多,但是多了一点东西比如画红线的,对其查找注释
a.preg_match()函数中有了一个i,证明不区分大小写了,那大小写绕过就不行。
b.str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。

该函数必须遵循下列规则:

如果搜索的字符串是数组,那么它将返回数组。
如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。

注释:该函数区分大小写。请使用 str_ireplace() 函数执行不区分大小写的搜索。

注释:该函数是二进制安全的。
在此函数中,它会搜索字符串里的troye这个字符串然后将其删除,这样我们可以类似上一题的形式用base64绕过,之后在解码即可
在这里插入图片描述
攻防世界解题分析
a.在这里插入图片描述
注释:is_numeric() 函数用于检测变量是否为数字或数字字符串,如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。
== 会先将字符串换成相同类型,再作比较,属于弱类型比较。
在本题中如果a==0或者 a , 就 输 出 f l a g 1 , 这 时 得 到 的 f l a g 不 是 真 正 的 f l a g , 由 此 我 们 还 应 该 输 出 f l a g 2 , 分 析 知 a,就输出flag1,这时得到的flag不是真正的flag,由此我们还应该输出flag2,分析知 a,flag1flagflagflag2b>1234即输入?a=abc&b=1325a即可
b.
在这里插入图片描述
注释:此题就是get,post简单运用,其中用到Max HacKBar工具
c.
在这里插入图片描述
注释:while函数根据page参数来判断php文件是否存在,如果存在此文件,则进行文件包含
(查找总结:在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句来完成这个任务。

在 PHP 中,提供了下列循环语句:

while - 只要指定的条件成立,则循环执行代码块
do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
for - 循环执行代码块指定的次数
foreach - 根据数组中每个元素来循环代码块

之后看代码中有一个page,然后查找他的作用分析默认页面为http://127.0.0.1设置为page值,可确保while为真
之后用hello参数如下
在这里插入图片描述
然后ls改为fl4gisisish3r3.php即可
在这里插入图片描述

php伪协议简单形式总结:
a.类型
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流
b.php.ini配置
all_url_include在php 5.2以后添加,安全方便的设置(php的默认设置)为:allow_url_fopen=on;all_url_include=off;
allow_url_fopen = On (允许打开URL文件,预设启用)
allow_url_fopen = Off (禁止打开URL文件)
allow_url_include = Off (禁止引用URL文件,新版增加功能,预设关闭)
allow_url_include = On (允许引用URL文件,新版增加功能)

禁止allow_url_include解决了远端引用(Include)的问题, 同时又让我们还可以在
一般的情形下使用fopen去打开远端的档案, 而不必再牵连上打开include函数所带来的风险.
因此在新版PHP中allow_url_fopen选项预设是打开的,而allow_url_include则预设是关闭的.
然而事实上若从系统角度来看,即使禁止了PHP的allow_url_fopen和allow_url_include功能,
其实也不能完全阻止远端调用及其所带来的安全隐忧,而且它们只是保护了标记为URL的句柄,
也就是说只能影响http(s)和ftp(s)的调用, 但对包含其他标记的远端调用,例如对PHP5.2.0
新版所提供的php和data则无能为力,而这些调用一样会导致注入风险
c.一些稍微具体分析:
1.file:// 协议:条件:allow_url_fopen:off/on;
allow_url_include :off/on

作用:用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。
include()/require()/include_once()/require_once()参数可控的情况下,如导入为非.php文件,则仍按照php语法进行解析,这是include()函数所决定的。

用法:file://[文件的绝对路径和文件名]
http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt
[文件的相对路径和文件名]
http://127.0.0.1/include.php?file=./phpinfo.txt
[http://网络路径和文件名]
http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

2.php:// 协议:条件:allow_url_fopen:off/on;
allow_url_include :仅php://input php://stdin php://memory php://temp 需要on

作用:php:// 访问各个输入/输出流(I/O streams),在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。

用法:1.php://filter/read=convert.base64-encode/resource=[文件名]读取文件源码(针对php文件需要base64编码)
2.php://input + [POST DATA]执行php代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值