Tips
远程文件包含
在进行文件包含时,不一定非要包含目标主机的文件,也可以包含自己电脑上的文件,举个例子:
先在本地创建一个网站,名字随便,这里起名test.com,端口81,文件包含的文件名是1.php,内容是:
1 | |
本地被包含的文件名为1.txt,内容是:
1 | |
然后看一下自己的ip,这里是192.168.120.1
划重点,这里我的ip是vmnet1(仅主机)下的ip,如果想复现的话别搞错ip
包含的url:
1 | |
依然能看到服务器的phpinfo()信息。
sql一些特性
1.exp()函数
exp(x)函数是计算自然常数e的x次方的函数,exp(709)合法而exp(710)非法,因此,在进行盲注时,若if()被过滤,可转而使用exp(),如:
1 | |
等价于:
1 | |
返回值都是1(true)
2.and 1=1
如果不行,and 1也是一样的
3.ord()
ord(str)函数用于查找字符串中最左侧字符,若最左侧字符为单字节字符,ord()函数返回该字符的ascii值,根据此特性,ord()函数可以用来代替ascii()函数
4. /**/
当database()被拦,可以尝试database/**/()效果一样
database(/**/)也可以正常执行,当然,上述两种方法可以组合。
1 | |
由此,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 | |
文件上传
1.当<?被拦,可以采用如下形式:
1 | |
2.变量传递
1 | |
传入方法:xx.php?x=b&y=assert
post:z=phpinfo();
对数据传输进行加密:
1 | |
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 | |
jother编码
首先给出一个非官方的jother编码定义:jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中少量字符包括:”!”、”+”、”(“、”)”、”[“、”]”、”{“、”}”。只用这些字符就能完成对任意字符串的编码
可以拿来绕过xss
Kali获取Windows shell乱码
kali执行echo $LANG查看当前用户的语言环境变量,是UTF-8
windows执行chcp,显示“活动代码页: 936”,这是GBK
所以问题是编码不同。
解决方法:在kali的shell中执行chcp 65001,将编码统一成UTF-8