该文章内容为本人个人学习中的记录和理解,部分内容可能有些出入,但值得新手一读并结合互联网搜索理解和学习更多的知识。本人恳切的希望各位读者能从本文章中有所收获,并希望各位读到纰漏之处不吝赐教,非常地感谢。
CTF中WEB 类的题目包括但不限于:SQL 注入、XSS 跨站脚本、CSRF 跨站请求伪造、文件上传、文件包含、框架安全、PHP 常见漏洞、代码审计等。
弱类型问题
在PHP中:
== 会先将两遍的数据进行类型转换再比较;
=== 会先判断类型是否相等再比较数据是否相等
两个等号( == )数据转换的规则是:
数字和字符串比较:先将字符串转化成数字,从字符串的第一个位字符开始,如果不是数字,则该字符串转换为数字0;如果是数字,一直往下数到最近的不是数字的字符为止。
举例如下:
- “admin” == 0
- “admin123” == 0
- “123admin” == 123
- “123ad111” == 123
- “0e123456” == “0e999999”
- 只有
0e
后面全为数字的两个字符串才会相等,如果是0e123abc
、0e111abc
、0e123456
则互不相等,但都和数字0
弱相等,即:
0e123abc != 0e111abc != 0e123456
-
0e123abc == 0
0e111abc == 0
0e123456 == 0
当字符串作为数字取值时,包含“.”、“e”、“E”(科学计数法)的字符串会被认为是float类型,其他情况都视为int类型,举例如下:
- 1+”10.5″== 11.5(float)
- 1+”-1.1e1″ == -10(float)
- 1+”123ad111″ == 124
MD5的弱相等
方法1、PHP处理0e开头的md5哈希值时的缺陷问题,两个0e开头的哈希值在比较时都被认定为数字0,如下:
$a != $b;
md5($a) == md5($b)
//部分0e开头的MD5哈希值:
//7197546197 :0e915188576072469101457315675502
//ABJIHVY : 0e755264355178451322893275696586
$a == md5($a)
// 以0e开头,其md5值也是以0e开头的值:0e215962017 :0e291242476940776845150308577824
方法2、以数组的形式将数据转化为MD5哈希值,会返回NULL
md5(array($a)) //返回值为 NULL
md5(array($b)) //返回值为 NULL
md5(array($a)) === md5(array($b)) // 强相等
强相等的md5:
$id[]=123;
$gg[]=456;
var_dump($id===$gg); // false
var_dump(md5($id)===md5($gg)) // true
RCE(远程命令执行漏洞)
RCE(remote command/code execute)远程命令执行漏洞
在操作系统上执行任意命令
如php中的 style()、exec()、shell_exec()等函数方法
$ip = 127.0.0.1;ls -l; // 中间的分号可以隔开两次命令,两次命令都会执行
// cmd1;cmd2 执行cmd1后,执行cmd2
// cmd1&&cmd2 cmd1执行成功后才会执行cmd2
// cmd1||cmd2 cmd1执行失败后才会执行cmd2
// cmd1|cmd2 cmd1命令的结果作为cmd2命令的参数,执行获得cmd1参数后的cmd2
// %0a %0d 换行符
system("ping -c 4".$ip)
字符过滤问题:
空格绕过使用: ${IFS}、${IFS}$、$IFS$9、重定向符和
绕过
base64绕过:echo [xxx]|base64 -d|base
echo [xxx]|base64 -d|sh
定义变量作拼接:a=fl;b=ag;cat $a$b.php
内联执行:cat $(ls|grep flag.php) // 本质是先执行$()内的命令再执行外面的命令,也可以将$()换成反引号引起来
无字母数字RCE
php段标签 : 和
<?php
等同
=
等同 echo
=$(/???/???%20*);
可以表示:输入/bin/cat *
文件有关漏洞
文件包含
- 文件包含漏洞:文件被解析
- 文件读取漏洞:显示文件源代码
- 文件下载漏洞:提示文件下载,有下载功能的地方都有可能又下载漏洞
文件上传
规定了文件上传的类型,可能是
- 前端JS过滤:关闭JS、burpsuite改文件名
- 后端代码过滤:尝试使用其他文件名、muma注入
文件备份
备份文件一般都是.bak或者.swp,一般备份文件在/index.php.bak
扫描工具有 dirsearch、御剑
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net