浅谈CTF绕开字符数据结构shell

访客3年前黑客工具1081

親愛的的,关心我啊

12/14

文中篇幅3734

来与我一起阅读吧

在CTF中,尽管有很多文章内容有这些方面的材料,可是相对而言较为零散,这儿关键把自己学习培训和打ctf碰到的一些绕开字符数据结构shell整理一下。

无英文字母数据webshell简易而言便是payload中不可以发生英文字母,数据(有一些题型也有别的一些过虑),根据异或运算取反等方式 获得flag。

文中涉及到知识要点实际操作训练-应用base64与deflate对webshell编号

异或的符号是,是一种运算符。

异或运算脚本 ***

运作该脚本 *** 我们知道

根据这类方式 结构一个phpinfo()涵数

取反的标记是,也是一种运算符。在标值的二进制表明 *** 上,将0变成1,将1变成0。

直接看怎样结构phpinfo()

能够看得出,自身对phpinfo取反,会造成一些不由此可见字符,可对phpinfo取反后再开展url编号。

取反脚本 ***

之一种方式

第二种方式

脚本 ***

这一脚本 *** 能够将“assert”变为2个字符串异或运算的結果,根据变更shell的值能够结构出大家要想的字符串。为了更好地便于表明,转化成字符串的范畴为33-126(由此可见字符)。

?shell=$_ = "!((%)("^"@[[@[\\";$__ = "!+/(("^"~{`{|";$___ = $$__;$_($___[_]);

$_="!((%)("^"@[[@[\\\\";$__="!+/(("^"~{`{|";$___=$$__;$_($___[_]);

第三种方式

PHP5中,assert()是一个涵数,我们可以用

=assert;_()那样的方式来执行编码。但在PHP7中,assert()变成了一个和eval()一样的语言表达构造,不会再适用上边那类启用方式 。但PHP7.0.12下还能那样启用。

剖析下这一Payload,?>合闭了eval内置的<?标识。下面应用了短标识。{}包括的PHP编码能够被执行,~"????"为"_GET",根据反引号开展shell指令执行。最终大家只需GET传参?就可以执行指令。

PHP7

在PHP7中,我们可以应用($a)()这类方式 来执行指令。因此可以用取反结构payload执行指令。(~???????)();执行phpinfo涵数,之一个括弧中能够是随意的关系式。可是这儿不能用assert()来执行涵数,由于php7不兼容assert()涵数。

PHP5

在PHP5中不会再适用($a)()方式 来调用函数,在崇拜P神的无英文字母数据webshell之提升篇后,拥有新的启迪。怎样在无英文字母,数据,$的DOS命令下getshell?大家利用在Linux shell下2个知识要点

1,shell下能够利用来执行随意脚本 ***

2,Linux文件名适用glob使用通配符替代

从图能够看得出,我们可以取得成功用 文件名来执行文件,可是当使用通配符来执行文件时,系统软件会执行配对到的之一个文件。

在这里2个标准下我们可以想起,假如我们可以提交一个文件,用于执行这一文件就可以取得成功getshell。

那麼大家如何提交文件呢?提交文件取得成功后文件又储存在哪儿?如何配对执行?

更先我们可以推送一个提交文件的POST包,这时PHP会将大家提交的文件储存在临时性文件夹下,默认设置的文件名是,文件名最终6个字符是任意的英文大小写。

如今我们可以利用glob使用通配符配对该文件,我们知道

能够替代0个及之上随意文件

能够意味着一个随意字符

能够用于分辨这一部位的字符是否a

能够用于限定范畴

根据ascii时速表我们知道,由此可见英文大写字母与中间,因此我们可以利用来表明英文大写字母。

综上所述,我们可以利用来配对

实战演练演习

根据撰写脚本 *** 看一下什么由此可见字符沒有被过虑

更先,大家应当提交写一个表格提交

递交一个1.txt的文件,这一文件会被储存在这个临时性文件夹下,大家执行这一临时性文件夹便是执行1.txt文件里边的內容。

我们在把1.txt中载入,并把执行完文件回到的內容(即执行ls回到的內容)储存在文件目录下的abc文件中

是Apache的默认设置途径,大家还可以立即写

然后在ip详细地址后加上,能够见到取得成功回到执行1.txt后的內容。

立即

大家还能够提交一个小龙文件

比如大家建立一个hello.php的文件,文件內容为

随后

相关文章

浅析CTF绕过字符数字构造shell

浅析CTF绕过字符数字构造shell

前言在CTF中,虽然有很多文章有这方面的资料,但是相对来说比较零散,这里主要把自己学习和打ctf遇到的一些绕过字符数字构造shell梳理一下。无字母数字webshell简单来说就是payload中不能...