当前位置: 首页 > news >正文

网站网页宽度多少合适一个完整的网站 技术

网站网页宽度多少合适,一个完整的网站 技术,基础建设龙头股,IP怎么屏蔽网站域名目录 小于8个字符突破限制 无字母数字执行 php7的做法 php5的思考 PHP5shell 深入理解glob通配符 构造POC,执行任意命令 无参数读文件和RCE总结 代码解读 构造. 另一种构造方法 小于8个字符突破限制 但也只能执行一些非常短的命令,没有什么意义…

目录

小于8个字符突破限制

无字母数字执行

php7的做法

php5的思考

PHP5+shell

深入理解glob通配符

构造POC,执行任意命令

无参数读文件和RCE总结

代码解读

构造.

另一种构造方法


小于8个字符突破限制

但也只能执行一些非常短的命令,没有什么意义,所以我们需要尝试如何取突破这个限制

我们是否可以尝试使用创建文件名的方式通过一堆文件名形成一句话木马然后将这些文件放进一个文件里面然后执行

最终执行

无字母数字执行

1. webshell长度不超过35位
2. 除了不包含字母数字,还不能包含`$`和`_`        所以,如何解决这个问题?

PHP7前是不允许用`($a)();`这样的方法来执行动态函数的,但PHP7中增加了对此的支持。所以,我们可以通过`('phpinfo')();`来执行函数,第一个括号中可以是任意PHP表达式。

所以很简单了,构造一个可以生成`phpinfo`这个字符串的PHP表达式即可。payload如下(不可见字符用url编码表示):

php7的做法

(~%8F%97%8F%96%91%99%90)();

php5的思考

但是php5中并不支持这样的做法

“反引号”就是PHP中最简单的执行shell的方法。那么,在使用PHP无法解决问题的情况下,为何不考虑用“反引号”+“shell”的方式来getshell呢?

因为反引号不属于“字母”、“数字”,所以我们可以执行系统命令,但问题来了:如何利用无字母、数字、`$`的系统命令来getshell?

好像问题又回到了原点:无字母、数字、`$`,在shell中仍然是一个难题。

我们选择写一个文件上传的html传入到test会发现它会产生一个临时文件

我们是否可以在这个文件里面写入我们的shell命令在这个文件没有被删除的情况下执行来让它去进行我们想要的操作

但是当我们想要去匹配这个文件时就会发现一些问题这个零时文件会有很多我们如何才能够精准的匹配上呢?而且他还限制了字母和一些符号不让我们使用

PHP5+shell

此时我想到了两个有趣的Linux shell知识点:

1. shell下可以利用`.`来执行任意脚本

2. Linux文件名支持用glob通配符代替

但是又会有一个问题就是虽然我们绕过了限制但是匹配的文件非常多无法找到我们需要的文件

于是我又想到用?来匹配

我们可以发送一个上传文件的POST包,此时PHP会将我们上传的文件保存在临时文件夹下,默认的文件名是`/tmp/phpXXXXXXXXX`,文件名最后9个字符是随机的大小写字母。

但好像还是不行,文件还是非常的多无法找到我们想要的文件

深入理解glob通配符

其中,glob支持用`[^x]`的方法来构造“这个位置不是字符x

我发现另一个有趣的用法:

就跟正则表达式类似,glob支持利用`[0-9]`来表示一个范围。

于是我们去观察一下他生成的这个零时文件有什么特性,会发现它最后一位字母可能会出现大写的情况而其他的文件命名都是小写,这样我们好像就可以去匹配上了

翻开ascii码表,可见大写字母位于`@`与`[`之间:

那么,我们可以利用`[@-[]`来表示大写字母:

我们发现这样子是可行的

构造POC,执行任意命令

当然,php生成临时文件名是随机的,最后一个字符不一定是大写字母,不过多尝试几次也就行了。

最后,我传入的code为`?><?=`. /???/????????[@-[]`;?>`,发送数据包如下:

无参数读文件和RCE总结

<?php
highlight_file(__FILE__);
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {    eval($_GET['code']);
}
?>
代码解读

这里使用preg_replace替换匹配到的字符为空,\w匹配字母、数字和下划线,等价于 A-Za-z0-9_,然后(?R)?这个意思为递归整个匹配模式

所以正则的含义就是匹配无参数的函数,内部可以无限嵌套相同的模式(无参数函数),将匹配的替换为空,判断剩下的是否只有;

正常的,print_r(scandir('.'));可以用来查看当前目录所有文件名

那么怎样去构造这个.

构造.

 localeconv()返回一包含本地数字及货币格式信息的数组,而数组第一项就是"."

current()返回数组中的单元,默认取第一个值:

所以我们可以利用这两个函数加上前面的函数可以将路径打印出来

pos是current的别名这个可以代替它,如果这个不能使用还可以用reset()如果都被过滤还可以使用reset(),该函数返回数组第一个单元的值,如果数组为空则返回 FALSE

另一种构造方法

chr(46)

这个就是“.”这个字符

这里有三个函数可以利用

chr(rand()) (不实际,看运气)
chr(time())

chr(current(localtime(time())))

chr()函数以256为一个周期,所以chr(46),chr(302),chr(558)都等于"."
所以使用chr(time()),一个周期必定出现一次"."

chr(current(localtime(time()))):

数组第一个值每秒+1,所以最多60秒就一定能得到46,用current(pos)就能获得"."

http://www.yayakq.cn/news/974102/

相关文章:

  • 果洛州公司网站建设数据库性质的网站怎么做
  • php制作电影网站网站一个月
  • 新兴县城乡建设局网站wordpress 4.2.5
  • 自己的电脑做服务器搭建网站做网站的哪家比较好
  • 网站开发前台怎么样东莞有哪些大公司
  • 网站建设公司如何生存如何做网络营销能成功呢
  • 正规的培训行业网站制作跨境电商网站系统开发
  • 上海建设银行招聘网站网络推广需要什么
  • html如何做网站天津市装修公司排名榜
  • 国家icp备案网站网站设计公司网站设计公司
  • icp网站备案密码找回一个ip做几个网站
  • wordpress 移动 建站美团如何做推广
  • 网站代运营费用齐河网站建设费用
  • 网站备案好宁波营销网站建设外包
  • 行业网站设计开发费用电子商务企业网站建设前期规划方案
  • 廉政网站 建设需求怎么做伪静态网站
  • 怎么做纪念网站郑州网站建设搜索优化
  • 邹城网站开发卡片式网站模板下载
  • 推荐大良营销网站建设手机看电视剧网站大全
  • 深圳团购网站设计简单网站设计网站
  • 郑州网站推广公司哪家好网站建设 教学视频
  • 快手淘客网站是怎么做的清远网站建设
  • 网站SEM优化如何做网站建设傲
  • 有没有专门做字体排版设的网站建站公司咨询
  • 江阴公司网站建设frontpage网站建设论文
  • 天津做流产五洲网站wordpress静态文件目录下
  • 网站的数据库怎么备份南宁网站建站推广
  • 河北省建设机械会网站首页wordpress的title
  • 外贸式响应式网站在线购物商城的设计与实现
  • 建设开源社区网站什么意思企业网站的概念