首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
软件添加id功能按钮
760 阅读
2
v2ray节点搭建
727 阅读
3
typecho非常有特色的模块
548 阅读
4
QQxml消息卡片生成源码
501 阅读
5
网易云音乐歌单ID获取教程
471 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
flutter
springboot
安卓
rust
linux
vue
docker
joe
快捷键
git
fish shell
maven
redis
netty
dart
groovy
js
设计模式
rpc
尽意
累计撰写
101
篇文章
累计收到
39
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
85
篇与
的结果
2021-01-28
网易云音乐歌单ID获取教程
手机端获取教程分享歌单-->复制链接。(手机端分享应该都会,就不附图了)复制得到的内容如下https://y.music.163.com/m/song?id=1330348068其中id后面就是音乐idPC端获取教程分享歌单-->复制链接。同上。
2021年01月28日
471 阅读
0 评论
1 点赞
2021-01-24
Joe Theme 主题 动态页面 添加音乐
1.找到这个目录,打开文件2.在这两个地方任一添加网易云音乐外链代码,建议吧这个宽度改为100%铺满屏幕完成
2021年01月24日
256 阅读
0 评论
3 点赞
2021-01-24
php表单提交并发送邮件给某个邮箱(示例源码)
首先,建立一个index.html文件,代码如下:<html> <head> <title>Simple Send Mail </title> </head> <body> <h1>Mail Form</h1> <form name="form1" method="post" action="mail.php"> <table> <tr><td><b>To</b></td><td> <input type="text" name="mailto" size="35"> </td></tr> <tr><td><b>Subject</b></td> <td><input type="text" name="mailsubject" size="35"></td> </tr> <tr><td><b>Message</b></td> <td> <textarea name="mailbody" cols="50" rows="7"></textarea> </td> </tr> <tr><td colspan="2"> <input type="submit" name="Submit" value="Send"> </td> </tr> </table> </form> </body> </html>然后新建一个“mail.php”文档把传输的文档进行发送<?php $stm="邮件内容"; require("smtp.php"); ########################################## $smtpserver = "smtp.qq.com";//SMTP服务器 $smtpserverport = "465";//SMTP服务器端口 $smtpusermail = "XXX@qq.com";//SMTP服务器的用户邮箱 $smtpemailto = "AAA@qq.com";//发送给谁 $smtpuser = "XXX@qq.com";//SMTP服务器的用户帐号 $smtppass = "666";//SMTP服务器的用户密码 $mailsubject = "666 ";//邮件主题 $mailbody = $stm;//邮件内容 $mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件 ########################################## $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证. $smtp->debug = TRUE;//是否显示发送的调试信息 $smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype); echo "<script>alert('邮件发送成功');parent.document.ADDUser.cheheh.click();</script>"; exit; } ?> 最后编写一个邮件类“smtp.php”<?php class smtp { /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ var $sock; /* Constractor */ function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass) { $this->debug = FALSE; $this->smtp_port = $smtp_port; $this->relay_host = $relay_host; $this->time_out = 30; //is used in fsockopen() $this->auth = $auth;//auth $this->user = $user; $this->pass = $pass; $this->host_name = "localhost"; //is used in HELO command $this->log_file = ""; $this->sock = FALSE; } /* Main Function */ function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") { $mail_from = $this->get_address($this->strip_comment($from)); $body = ereg_replace("(^|(\r\n))(\.)", "\1.\3", $body); $header .= "MIME-Version:1.0\r\n"; if($mailtype=="HTML") { $header .= "Content-Type:text/html\r\n"; } $header .= "To: ".$to."\r\n"; if ($cc != "") { $header .= "Cc: ".$cc."\r\n"; } $header .= "From: $from<".$from.">\r\n"; $header .= "Subject: ".$subject."\r\n"; $header .= $additional_headers; $header .= "Date: ".date("r")."\r\n"; $header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n"; list($msec, $sec) = explode(" ", microtime()); $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n"; $TO = explode(",", $this->strip_comment($to)); if ($cc != "") { $TO = array_merge($TO, explode(",", $this->strip_comment($cc))); } if ($bcc != "") { $TO = array_merge($TO, explode(",", $this->strip_comment($bcc))); } $sent = TRUE; foreach ($TO as $rcpt_to) { $rcpt_to = $this->get_address($rcpt_to); if (!$this->smtp_sockopen($rcpt_to)) { $this->log_write("Error: Cannot send email to ".$rcpt_to."\n"); $sent = FALSE; continue; } if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) { $this->log_write("E-mail has been sent to <".$rcpt_to.">\n"); } else { $this->log_write("Error: Cannot send email to <".$rcpt_to.">\n"); $sent = FALSE; } fclose($this->sock); $this->log_write("Disconnected from remote host\n"); } return $sent; } /* Private Functions */ function smtp_send($helo, $from, $to, $header, $body = "") { if (!$this->smtp_putcmd("HELO", $helo)) { return $this->smtp_error("sending HELO command"); } #auth if($this->auth) { if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) { return $this->smtp_error("sending HELO command"); } if (!$this->smtp_putcmd("", base64_encode($this->pass))) { return $this->smtp_error("sending HELO command"); } } if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) { return $this->smtp_error("sending MAIL FROM command"); } if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) { return $this->smtp_error("sending RCPT TO command"); } if (!$this->smtp_putcmd("DATA")) { return $this->smtp_error("sending DATA command"); } if (!$this->smtp_message($header, $body)) { return $this->smtp_error("sending message"); } if (!$this->smtp_eom()) { return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]"); } if (!$this->smtp_putcmd("QUIT")) { return $this->smtp_error("sending QUIT command"); } return TRUE; } function smtp_sockopen($address) { if ($this->relay_host == "") { return $this->smtp_sockopen_mx($address); } else { return $this->smtp_sockopen_relay(); } } function smtp_sockopen_relay() { $this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n"); $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); if (!($this->sock && $this->smtp_ok())) { $this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n"); $this->log_write("Error: ".$errstr." (".$errno.")\n"); return FALSE; } $this->log_write("Connected to relay host ".$this->relay_host."\n"); return TRUE;; } function smtp_sockopen_mx($address) { $domain = ereg_replace("^.+@([^@]+)$", "\1", $address); if (!@getmxrr($domain, $MXHOSTS)) { $this->log_write("Error: Cannot resolve MX \"".$domain."\"\n"); return FALSE; } foreach ($MXHOSTS as $host) { $this->log_write("Trying to ".$host.":".$this->smtp_port."\n"); $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out); if (!($this->sock && $this->smtp_ok())) { $this->log_write("Warning: Cannot connect to mx host ".$host."\n"); $this->log_write("Error: ".$errstr." (".$errno.")\n"); continue; } $this->log_write("Connected to mx host ".$host."\n"); return TRUE; } $this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n"); return FALSE; } function smtp_message($header, $body) { fputs($this->sock, $header."\r\n".$body); $this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> ")); return TRUE; } function smtp_eom() { fputs($this->sock, "\r\n.\r\n"); $this->smtp_debug(". [EOM]\n"); return $this->smtp_ok(); } function smtp_ok() { $response = str_replace("\r\n", "", fgets($this->sock, 512)); $this->smtp_debug($response."\n"); if (!ereg("^[23]", $response)) { fputs($this->sock, "QUIT\r\n"); fgets($this->sock, 512); $this->log_write("Error: Remote host returned \"".$response."\"\n"); return FALSE; } return TRUE; } function smtp_putcmd($cmd, $arg = "") { if ($arg != "") { if($cmd=="") { $cmd = $arg; } else { $cmd = $cmd." ".$arg; } } fputs($this->sock, $cmd."\r\n"); $this->smtp_debug("> ".$cmd."\n"); return $this->smtp_ok(); } function smtp_error($string) { $this->log_write("Error: Error occurred while ".$string.".\n"); return FALSE; } function log_write($message) { $this->smtp_debug($message); if ($this->log_file == "") { return TRUE; } $message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message; if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) { $this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n"); return FALSE;; } flock($fp, LOCK_EX); fputs($fp, $message); fclose($fp); return TRUE; } function strip_comment($address) { $comment = "\([^()]*\)"; while (ereg($comment, $address)) { $address = ereg_replace($comment, "", $address); } return $address; } function get_address($address) { $address = ereg_replace("([ \t\r\n])+", "", $address); $address = ereg_replace("^.*<(.+)>.*$", "\1", $address); return $address; } function smtp_debug($message) { if ($this->debug) { //echo $message; } } } ?><?php class smtp { /* Public Variables */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; /* Private Variables */ var $sock; /* Constractor */ function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass) { $this->debug = FALSE; $this->smtp_port = $smtp_port; $this->relay_host = $relay_host; $this->time_out = 30; //is used in fsockopen() $this->auth = $auth;//auth $this->user = $user; $this->pass = $pass; $this->host_name = "localhost"; //is used in HELO command $this->log_file = ""; $this->sock = FALSE; } /* Main Function */ function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") { $mail_from = $this->get_address($this->strip_comment($from)); $body = ereg_replace("(^|(\r\n))(\.)", "\1.\3", $body); $header .= "MIME-Version:1.0\r\n"; if($mailtype=="HTML") { $header .= "Content-Type:text/html\r\n"; } $header .= "To: ".$to."\r\n"; if ($cc != "") { $header .= "Cc: ".$cc."\r\n"; } $header .= "From: $from<".$from.">\r\n"; $header .= "Subject: ".$subject."\r\n"; $header .= $additional_headers; $header .= "Date: ".date("r")."\r\n"; $header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n"; list($msec, $sec) = explode(" ", microtime()); $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n"; $TO = explode(",", $this->strip_comment($to)); if ($cc != "") { $TO = array_merge($TO, explode(",", $this->strip_comment($cc))); } if ($bcc != "") { $TO = array_merge($TO, explode(",", $this->strip_comment($bcc))); } $sent = TRUE; foreach ($TO as $rcpt_to) { $rcpt_to = $this->get_address($rcpt_to); if (!$this->smtp_sockopen($rcpt_to)) { $this->log_write("Error: Cannot send email to ".$rcpt_to."\n"); $sent = FALSE; continue; } if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) { $this->log_write("E-mail has been sent to <".$rcpt_to.">\n"); } else { $this->log_write("Error: Cannot send email to <".$rcpt_to.">\n"); $sent = FALSE; } fclose($this->sock); $this->log_write("Disconnected from remote host\n"); } return $sent; } /* Private Functions */ function smtp_send($helo, $from, $to, $header, $body = "") { if (!$this->smtp_putcmd("HELO", $helo)) { return $this->smtp_error("sending HELO command"); } #auth if($this->auth) { if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) { return $this->smtp_error("sending HELO command"); } if (!$this->smtp_putcmd("", base64_encode($this->pass))) { return $this->smtp_error("sending HELO command"); } } if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) { return $this->smtp_error("sending MAIL FROM command"); } if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) { return $this->smtp_error("sending RCPT TO command"); } if (!$this->smtp_putcmd("DATA")) { return $this->smtp_error("sending DATA command"); } if (!$this->smtp_message($header, $body)) { return $this->smtp_error("sending message"); } if (!$this->smtp_eom()) { return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]"); } if (!$this->smtp_putcmd("QUIT")) { return $this->smtp_error("sending QUIT command"); } return TRUE; } function smtp_sockopen($address) { if ($this->relay_host == "") { return $this->smtp_sockopen_mx($address); } else { return $this->smtp_sockopen_relay(); } } function smtp_sockopen_relay() { $this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n"); $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); if (!($this->sock && $this->smtp_ok())) { $this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n"); $this->log_write("Error: ".$errstr." (".$errno.")\n"); return FALSE; } $this->log_write("Connected to relay host ".$this->relay_host."\n"); return TRUE;; } function smtp_sockopen_mx($address) { $domain = ereg_replace("^.+@([^@]+)$", "\1", $address); if (!@getmxrr($domain, $MXHOSTS)) { $this->log_write("Error: Cannot resolve MX \"".$domain."\"\n"); return FALSE; } foreach ($MXHOSTS as $host) { $this->log_write("Trying to ".$host.":".$this->smtp_port."\n"); $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out); if (!($this->sock && $this->smtp_ok())) { $this->log_write("Warning: Cannot connect to mx host ".$host."\n"); $this->log_write("Error: ".$errstr." (".$errno.")\n"); continue; } $this->log_write("Connected to mx host ".$host."\n"); return TRUE; } $this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n"); return FALSE; } function smtp_message($header, $body) { fputs($this->sock, $header."\r\n".$body); $this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> ")); return TRUE; } function smtp_eom() { fputs($this->sock, "\r\n.\r\n"); $this->smtp_debug(". [EOM]\n"); return $this->smtp_ok(); } function smtp_ok() { $response = str_replace("\r\n", "", fgets($this->sock, 512)); $this->smtp_debug($response."\n"); if (!ereg("^[23]", $response)) { fputs($this->sock, "QUIT\r\n"); fgets($this->sock, 512); $this->log_write("Error: Remote host returned \"".$response."\"\n"); return FALSE; } return TRUE; } function smtp_putcmd($cmd, $arg = "") { if ($arg != "") { if($cmd=="") { $cmd = $arg; } else { $cmd = $cmd." ".$arg; } } fputs($this->sock, $cmd."\r\n"); $this->smtp_debug("> ".$cmd."\n"); return $this->smtp_ok(); } function smtp_error($string) { $this->log_write("Error: Error occurred while ".$string.".\n"); return FALSE; } function log_write($message) { $this->smtp_debug($message); if ($this->log_file == "") { return TRUE; } $message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message; if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) { $this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n"); return FALSE;; } flock($fp, LOCK_EX); fputs($fp, $message); fclose($fp); return TRUE; } function strip_comment($address) { $comment = "\([^()]*\)"; while (ereg($comment, $address)) { $address = ereg_replace($comment, "", $address); } return $address; } function get_address($address) { $address = ereg_replace("([ \t\r\n])+", "", $address); $address = ereg_replace("^.*<(.+)>.*$", "\1", $address); return $address; } function smtp_debug($message) { if ($this->debug) { //echo $message; } } } ?>
2021年01月24日
248 阅读
3 评论
4 点赞
阿里云域名如何在腾讯云服务器解析使用的具体流程
阿里云域名如何在腾讯云服务器使用的具体流程是什么?前言:因为我开始也是在阿里云买的域名,后来因为多方面因素选择了腾讯云服务器,这时候就涉及到在阿里云注册的域名,如何在腾讯云服务器上使用的操作流程了。对于新手来说横跨两大云服务商家的操作是很麻烦的,尤其是没操作过的人来说更是这样。话不多说,直接开启教程对于阿里云域名想要在别家服务器商家使用的话,需要修改域名 DNS服务器地址,把域名管理权交给腾讯云去管理。一、点我直达阿里云网站,找到并点击右上角“控制台”,在我的云产品中点击“域名”进入域名控制台。找到你想部署的域名最右侧,点击“管理”,修改 DNS地址为截图中的腾讯云 DNS地址。如果提示“已开启[禁止更新锁],该功能暂不可用”,这是阿里云的安全机制作用了,需要你去手动关闭,按照提示操作,提供相应的手机验证码即可。改完了之后(这里我已经修改过了),域名的管理权就迁移到腾讯云去了,以后域名解析、部署等都在腾讯云那里管理。但是域名续费、过户还是在阿里云这里管理的,大家要分清楚这个关系。二、腾讯云服务器自行购买腾讯云服务器。三、做接入备案因为之前的域名在阿里云申请的,现在放到腾讯云服务器上使用,需要在腾讯云做接入备案。接入备案其实和新域名备案差不多的过程,几乎没有区别。详情可自行百度,各大论坛都有,这里就不多说了。四、添加腾讯云解析备案时间看管局审批时间,如果正常的话,3天~20天都有可能,这时间内大家要耐心等待吧,企盼管局别出什么幺蛾子,顺利下号。拿到备案号之后就可以正常做域名解析到服务器 IP了。点我直达腾讯云官网,搜索“云解析”,点击添加记录,可选添加 A记录或者 CNAME记录。添加 A记录的话,域名直接指向服务器 IP地址;添加 CNAME记录是以 CDN加速的方式访问网站。建议选择后者,可以隐藏 IP 和加快网站访问速度。腾讯云每个月送免费 10G流量使用,包含 http 和 https 流量在一起了,不够用也可以付费购买,很便宜的。添加完解析后使用宝塔面板搭建环境,建站之类的就不说了,大家应该都知道接下来怎么操作了。由此就完成了阿里云域名在腾讯云服务器使用的操作流程。
2021年01月23日
216 阅读
0 评论
10 点赞
2020-12-20
Linux下提权常用小命令
有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么难,你真去尝试做了,也许你就会发现Linux下的提权并不难,尤其是一些简单的提权方法是很容易学会的。Linux下的提权我知道的比较简单的方法都是在命令行下完成的,很多新手叉子可能根本没接触过Linux下的一些常用命令,今天危险漫步就给大家介绍一些Linux下提权过程中常用到的Linux命令,由于我也是刚学了几个Linux命令,介绍的不对或不全的还请大家多多指正和谅解。对大家来说,在Linux下的提权最简单也是最有效的方法就是通过本地溢出漏洞提权。找到合适的漏洞利用程序在命令行下运行一下就完成了提权。由于Linux下的提权大多是在命令行下进行的,因此要提权首先要得到一个执行命令的地方。我们最先得到的是一个webshell,比如PhpSpy。尽管很多Webshell提供了在Linux下执行命令的功能,但往往只能执行一些不需要交互的命令,因此我们首先要得到一个可执行交互命令的窗口,用到的方法是反弹shell到本地。PhpSpy自带了这个功能,名为“Back Connect”。要想反弹回shell,你需要一台有公网lP的电脑(当然了,只有内网IP的电脑做了端口映射也可以),然后在你要反弹回来的电脑上首先用nc来监听要反弹回来的端口,如果要反弹回来的端口为12345,就执行nc -vv -|-p 12345来监听12345端口。然后回到PhpSpy中的”Back Connec”,在“Your IP”后面自动识别除了你当前电脑的公网IP,如果要反弹到别的电脑上请输入要反弹电脑的IP,我这里要反弹到本机,就不需要修改了,“You Port”是你要反弹电脑上正在监听的端口,默认为12345,知道我上面为什么在本机监听12345端口了吧,就是在这里不需要修改“Your Port”了,当然,你也可以在本地监听123456端口,然后把“Your Port”也修改成对应的123456端口就行了。点“Start”按钮进行反弹,过一会儿本机的监听窗口看到类似信息就说明反弹成功了,得到了一个可执行交互命令的窗口。接下来执行命令的效果和在Ubuntu的终端中执行命令的效果几乎完全相同,所以我在Ubuntu 10.10的终端中执行常用的提权中用到的命令来给大家演示。在反弹回来的权限较低的shell的命令窗口中有权限执行的命令有:1、uname 输出一组系统信息。如果不跟随选项,则视为只附加-s选项。常跟的参数有-a,在我的Ubuntu 10.10的终端中执行uname-a命令后显示,其中最前面的Linux表示是基于Linux内核的,2.6.35-28是具体的内核版本号。这个内核版本号非常重要,因为如果是采用溢出漏洞提权的话内核版本号是寻找溢出漏洞利用程序最重要的参考信息,根据当前的内核版本号寻找适用于这个版本号的漏洞利用程序。2、pwd 获得当前目录,在用webshell上传漏洞和用程序前执行一下pwd命令获得当前目录,把漏洞利用程序直接上传到当前目录,在执行漏洞利用程序时就可以免去输入目录的麻烦。执行pwd命令后显示/home/test,说明当前目录为/home/test/。 另外,通过webshell比如PhpSpy的“Back Connect”反弹回来的shell默认的当前目录为webshell所在的目录。3、ifconfig 显示网络配置信息,比如显示有哪些网卡,每块网卡的配置信息(IP地址、MAC地址、子网掩码)等,常用参数-a执行ifconfig-a命令后显示。从信息可以知道,当前系统共有一块网卡etho,IP地址为192.168.19.138,子网掩码为255.255.255.0。4、netstat 显示当前的网络连接状态,与Windows系统下的netstat命令写法相同,功能也差不多。 执行netstat后显示了很多网络连接的信息。5、psps是用来报告程序执行状况的指令,你可以搭配kill指令随时中断,删除不必要的程序。常用的参数有a,u,x a 显示现行终端机下的所有程序,包括其他用户的程序。u 以用户为主的格式来显示程序状况。x 显示所有程序,不以终端机来区分。执行ps aux命令后显示,显示了程序的进程id,CPU占用率等详细信息,如果要结束某个程 序,只需要用命令kill-9 PID就可以结束,其中PID就是在执行ps aux命令时显示的程序的PID,当然前提是要有相应的权限。6、gcc 很多Linux下的漏洞利用程序都是用C语言写的,我们得到的很多时候是漏洞利用程序的C语言的源代码,要想得到可执行程序,需要对源代码进行编辑,这时候就用到大名鼎鼎的gcc了。个别情况下可能因为兼容性的原因必须需要在要提权的Linux主机上编译漏洞利用程序,这时候也需要用到gcc。GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。它是一套以GPL及LGPL许可证所发行的自由软件,也是GNU计划的关键部分,亦是自由的类Unix及苹果电脑Mac OS X操作系统的标准编译器。名为GNUC语言编译器,因为它原本只能处理C语言,GCC很快地扩展,变得可处理C++,之后也变得可处理Fortran、Pascal、Objective-C、Java,以及Ada与其他语言。在大多数情况下,你在本地的Linux系统中编译好的溢出漏洞利用程序直接上传到要提权的Linux主机上也能正常使用,不是必须要在要提权的主机上编译溢出漏洞的利用程序。因为gcc特别强大,功能特别多,用法也特别多,要讲全的话估计要一本厚书的篇幅,这里不可能一一介绍,只介绍Linux提权中常用到的两个方面:(1)gcc-v 查看安装的gcc的版本,我们的目的是通过执行gcc-v命令确认系统是否安装了gcc,如果安装了会显示安装的gcc的版本号如果提示找不到命令等说明gcc没有安装。Ubuntu 10.10默认安装了gcc。(2) 另一个用到的重要功能就是把漏洞利用程序的源代码编译成可执行程序了。假设溢出漏洞利用程序源代码文件是exp.c,通过websbell把exp.c上传到了要提权的Linux主机的当前目录下,在反弹回来的命令窗口中执行gcc-o exp exp.c,就会把exp.c编程成可执行程序exp,其中-o参数后面跟着的是编译生成的可执行程序的名字,这里为exp,另一个参数exp.c是要编译的溢出漏洞利用程序源代码的文件名,这里为exp.c。执行命令后如果没有错误提示就说明编译成功了。执行一下命令ls,发现可执行文件exp已经生成了。 接下来输入./exp就可以运行漏洞利用程序exp了,如果溢出成功会显示,注意下面的那个,对Linux有点了解的都知道对应的是root权限,看到#就说明提权成功了,接下来你就可以以root权限运行各种命令了。在通过溢出漏洞获得root权限后,能执行的命令就多了,很多没提权前没权限执行的命令现在都可以执行了。这时候可以执行一些命令来获取一些敏感信息或进行留后门清理日志等操作,方便更好的控制提权成功的服务器。1、cat .bash_history 查看该用户曾经执行过的命令,也就是查看root用户执行过的命令。因为Linux下很多管理操作都是在命令行下完成的,而正常情况下用root用户执行命令的是管理员,通过查看管理员输入的命令,可能得到很多敏感信息。2、cat/etc/passwd cat/etc/shadow 分别执行cat/etc/passwd,cat/etc/shadow命令后得到passwd和shadow的内容,把两个文件的内容保存到本地用john挂字典尝试破解root用户的密码,具体怎么破可以自己查询相关信息。cat/etc/shadow只有root权限才能执行。3、chmod 在提权成功获得root权限后你如果想下载服务器上的一个文件到本地,我的方法是先执行cp命令把要下载的文件复制到网站的Web目录下,但复制过去的文件只有root用户能访问,直接用浏览器下载会提示没有权限,这时候就需要用到chmod命令了。chmod命令的作用是变更文件或目录的权限。如果要下载的文件是shadow1,执行命令chmod 777./shadow1后就可以直接用浏览器下载了,不会再有权限问题了。当然,在获得root权限后还可以做很多事,比如安装后门,想办法搞到root用户的密码等,可惜我不会,也和本文的题目“Linux下提权常用小命令”关系不大,这里就不介绍了。在实际提权过程中用到的命令可能远不止这么多,我介绍的都是大路边的最常用的。由于我对Linux几乎也是一窍不通,有介绍的不对的地方还请大家谅解。以后大家们遇到Linux主机,不要不敢去尝试提权,大胆尝试,往往会有惊喜和收获。 文章来自DSNA,转载一下方便查看
2020年12月20日
425 阅读
2 评论
4 点赞
1
...
16
17