阳光下灿烂 發表於 2023-8-18 00:00:00

关于sql注入的简要演示(入坑抛砖)

<p>
        首先可能大家都会问什么是sql?</p>
<p>
        sql是数据库的一种类型,是用来存储网站数据的。</p>
<p>
        每当我们点开一个网站,就会从网站的数据库中获取相关的内容。</p>
<p>
        我们来梳理一下访问网页的简图:</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/4174235b16bba8a59b255511b8c2ddfc.jpg"></p>
<p>
        看完这个以后,我们发现一个问题,当我们对发送数据这块动足够脑筋的时候,只要输入合理是可以做很多事情的,我们可以利用其方式获取很多内容。</p>
<p>
        接下来我们来讲解一下<code>“ ' ”</code>这个符号在sql中的运用</p>
<p>
        首先<code>' </code>在sql中闭合一句话结束,如果这句话用的是<code> ' </code>来闭合,那么我们人为的加入 ' 是不是可以在后面接新的语句了呀?接新的句子就可以做自己想要做的事情了。</p>
<p>
        当然,如果大家想要真的理解还是要多学学sql和asp等语言。</p>
<p>
        接下来我们来开始演示吧~</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/19b4f6221ddee20147ed53c420ed0ec0.jpg"></p>
<p>
        接下来步入正轨,进入域名以后,我们会发现网站是要我们输入id的,所以在这里按照sql的要求输入</p>
<p>
        http://localhost/sqli/less-1/?id=1</p>
<p>
        这里的<code>?id=1</code>是数据库的进入的格式,想要回去对应的数据变数字就行了。</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/5a2ffd162af3e17c084f09d5a70c60cb.jpg"></p>
<p>
        http://localhost/sqli/less-1/?id=2</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/8053f33348b82c035922c48b8f47b3fc.jpg"></p>
<p>
        接着变换id,我们发现有多个账户密码,这些都是这个网站对应的数据库里面的内容。也是数据库里面对应的路径。</p>
<p>
        接下来就是重点了,当我们在http://localhost/sqli/less-1/?id=1后面加入 ' 时候,我们来看一下</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/2b1a3dd2853fe520b79ec458a7623426.jpg"></p>
<p>
        我们发现这个网站出现了报错,并且出现了错误信息的一个反馈</p>
<p>
        <code>''1'' limit 0,1' </code></p>
<p>
        这是由于我们加入 ' 引起的,我们来看一下这个报错语句,分析一下它,去掉最外层的 ‘' 得到 '1'' limit 0,1 我们发现这个数据库有限制,输出只能是一行。</p>
<p>
        因为我们加入了'闭合了语句,那么结合后面的内容,我们可以在'后面补充一些句子来得到更多的内容,在这里我想获取数据库用户名,一般默认user</p>
<p>
        http://localhost/sqli/less-1/?id=1'and updatexml(1,concat(0x7e,user()),0)%23</p>
<p>
        %23就是'的意思。 是#url编码之后的值,因为sql语句在进入数据查询的时候会进行一次url解码,所以这个地方必须是url编码之后的值</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/3054b55f6dc5617ff78a821b9fcea24e.jpg"></p>
<p>
        这里我们看到出现了</p>
<p>
        <code>~root@localhost </code></p>
<p>
        也就是数据库的用户名是 root</p>
<p>
        接下来我要查询数据库名称</p>
<p>
        http://localhost/sqli/less-1/?id=1' and updatexml(1,concat(0x7e,datebase()),0)%23</p>
<p>
        <img title="关于sql注入的简要演示(入坑抛砖)" alt="关于sql注入的简要演示(入坑抛砖)" src="https://zhuji.jb51.net/uploads/img/202305/7d9990d24082abea18a409bfd8e2f71d.jpg"></p>
<p>
        这里因为我把数据库文件名字改了所以没有查出来,当然,如果你知道的够多,这里还有很多种做法,这里的datebase的名字是可以猜解出来的。</p>
<p>
        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。</p>
<p>
        原文链接:https://www.cnblogs.com/anbus/p/9928540.html</p>
頁: [1]
查看完整版本: 关于sql注入的简要演示(入坑抛砖)