括号。正1加括号-1/2等于几


· 超过26用户采纳过TA的回答

你对这个回答的评价是?

这个符号网友们有叫它《醒目括号》的,《加强括号》的,《黑括号》的等等.
在大篇的文字叙述里,我也用过.哎,我码了这几行字,也不知您想说啥?是这个意思么?

解析看不懂?免费查看同类题视频解析

作为一名初来乍到审计小白,从blueCMS入手再好不过了。通过对入门级的cms进行审计以及一个整体的框架和常见的漏洞学习,对个人而言是一次不错的学习经历。话不多说直接进入主题。

blueCMS是一个比较小众而且适合入门学习审计的CMS,从刚爆出漏洞至今网上已经有很多审计文章,大多都是两个熟知漏洞转来转去。但作为初入的小白自然不能满足。
所以对于这次入门决定花一些时间进去以记录一下审计过程中的困难和解决思路。

此次代码审计采用黑盒+白盒,能更好的了解漏洞产生的原因还有利用方法。

源码链接: 提取码:tj9s

默认安装能够访问upload即为成功

在bluecms中主要的核心代码在/include文件中,/admin是只有管理员才能访问,/data存放一些配置文件,数据库配置文件等。/install文件是在安装时候需要访问。但是假如说在安装完后/install没有删除而且可以继续访问/install重新安装,这样子就可以重置数据拿到管理员密码和权限。

渗透过程第一个漏洞:xss漏洞

当我们点开一个站点,一般来讲正常操作是注册->登录->浏览文章,所以第一步我们要在注册界面寻找漏洞。那么我们要先注册账户。

在注册中,出现了好多输入框,于是我在想可不可以尝试一下xss弹窗呢?

正常的填写注册,在抓包,然后将数据包拦截
防止js前端检测,所以我在pwd中间加上的测试xss函数,send后成功弹窗

在网页源码中可以看到js恶意代码,说明这里存在一个存储型xss

渗透过程中第二个漏洞:sql注入漏洞

现在知道存在一个xss点,然后我在想在username和password处会不会存在sql注入呢?

然后是无引号测试发现均为账户或密码错误

起初我是觉得没有漏洞的。 之后回看源码发现,在这里

由于默认使用的是gbk编码,我们已知当编码为gbk等双字节编码时,容易发生宽字节注入。(宽字节原理:两个字节以上叫宽字节,当我们测试的时候,输入“%df‘”,这个时候如果php函数是使用的addslashes()的时候,会在冒号的前面加上’’。也就变成了%df’ 。对应的编码是%df%5c’.这时候网站字符集是GBK,mysql使用的是gbk编码的时候,默认认为两个字符为一个汉字。当网站过滤的机制是采用转义的时候,我们可以在网站添加的转义符号前面构造一个%xx使得变成%xx%5c而被mysql认为是一个汉字,从而绕过转义。宽字节注入最长用的时%df,或者使用ascii码大于128的也可以 ,一般用129。)

宽字节注入是利用mysql的一个特性,因为gbk是多字节编码,他认为两个字节代表一个汉字,所以%df和后面的也就是%5c变成了一个汉字“運”,而单引号逃逸了出来,就可以成功闭合sql语句了
再加上后面的or 1=1 #就构造成了永真语句,可以成功免密登录管理员后台了

现在是admin权限,接下来就是寻找管理员权限下可以进行的操作并寻找漏洞。

渗透过程中第三个漏洞:文件包含漏洞

然后点开编辑打开一个链接,在编辑处写入一句话木马,然后点击保存。

利用文件包含进入到上上层目录下的info.php,进入info.php后写入一句话木马,直接菜刀连接获得web权限


以上是我在安装cms后未知源码渗透的过程发现的漏洞(一个人渗透时候弄出来的,没有参考没有参考)。

接下来就是代码审计使用seay代码审计工具。

empty()函数用于检查一个变量是否为空。trim()函数移除字符串中的字符。这部分代码可以看到ad_id参数通过get得到,判断是否为空,不为空,则没过滤地带入getone函数进行查询。
试了一下发现转义了,回头看了一下,上面包含了一个common.inc.php文件
里面有一个转义的操作 然后定位函数发现在/include/mysql.class.php文件中,然后进入函数看看有没有什么过滤。

我利用的是根据数据分析通过包含或者调用找到用户能控制的变量,一个一个的排查。优点就是不会像上面那种方法那样,漏掉一些页面。缺点就是,理清这个网站的结构有点麻烦。因为是找用户输入,所以各种页面都要打开,很麻烦。

跳转到getone函数,然后没有任何过滤可直接执行sql语句。而在这之前,文件的开始,会包含一个common.inc.php文件。我们打开common.inc.php,发现有magic_quotes_gpc函数.(注:magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。)

单引号(')、双引号(")、反斜线()与 NUL(NULL 字符),回头看了一下sql语句,发现参数位置并没有被单引号包住,那addslashes不就没用了吗?

第一种方法(手工注入)

看到ad_id=1就舒服很多,先是手注

  1. 在7处有回显,所以开始在7处构造payload

  2. (这个表名确实多的离谱)主要看blue_admin这张表看

基本的sqlmap使用方法就不都多说了。

通过对ad_js.php文件进行审计后发现反射型的xss几乎在sql注入漏洞的同时伴随着xss。在该文件的sql注入漏洞处,由于源码中没有任何过滤,可以直接将xss恶意语句写到地址栏中可成功执行

跟进一下 看看他过滤的严不严格,我们可以看到添加新闻的地方,存在存储型xss漏洞,因为只有$de和$content没有进行html转译处理。通过seay定位函数后发现再common.fun.php中有一次过滤。

过滤了script|i?frame|meta|link这几个标签,但是没有过滤img标签,所以可以尝试下其他方法绕过。

先成长使用script标签进行尝试,由于输入框很多我也不确定是哪一处存在xss,所以我在所有输入框中都加了script标签方便观察。

  1. 基本方式,利用尖括号插入js中
  1. 利用HTML标签属性值执行XSS
  1. 空格回车Tab绕过过滤
注意javas和cript之间的间隔不是由空格键添加的,而是用Tab键添加的。
一个正常的XSS输入: 
转换大小写后的XSS:
不用双引号,而是使用单引号的XSS:

我要回帖

更多关于 减号前面有括号,两数相加就知道 的文章

 

随机推荐