zoukankan      html  css  js  c++  java
  • 2019-9-10:渗透测试,基础学习,sql注入笔记

    sql注入
    1,万能密码,自己写的网站,找到登录窗口,必须和数据库交互,往里插入构造的恶意代码,最后可以直接登录进去,不需要账号和密码,输入的恶意代码成为万能密码,后端拼接的sql语句,SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';
    用户登录的地方没有处理,可以输入用户名 admin' or 1=1#,使用’单引号闭合
    注释符号:# -- %25 %2d%2d --+
    在输入:admin' and1=1#
    admin' or 1=1 limit 0,1#
    加单引号需要根据后端数据类型,如果是字符串类型就需要加,整型就不需要
    构成语句 select * from 'users' where user = '$user' or '1'='1' and password = '$pass';

    万能密码出现原因
    前端传递的参数可以随意控制,后端,后端代码执行过程中将用户输入的数据也当做代码执行了,违背了代码和数据分离原则
    利用的思路是由于后端对前端传递的数据没有过滤,或者过滤不严谨,导致万能密码sql注入

    危害,会造成数据泄漏,被拖库,篡改网站,破坏数据库,植入后门getshell

    sql注入分类
    请求方式,get post cookie
    参数形式,整型,字符型,搜索
    反馈类型,报错,union,延时,布尔(时间、页面显示状态)
    数据库类型,access ,mssql,mysql,oracle,nosql等
    利用技术,布尔,报错,内敛,堆叠,时间,联合

    手工注入
    常用数据库函数以及常量
    ascii()
    user()
    version()
    database()
    concat()
    group_concat()
    concat_ws()
    substr(s,start,leng),字符串截取函数都有三个参数,截取字符串,开始索引位置,截取长度
    substring(s,start,leng) mysql,mssql常用
    mid() mysql常用
    left(s,n),从左边开始截取,s是截取字符串,n是要截取的长度
    right(s,n),从右边开始截取,s是截取的字符串,n是要截取的长度
    if(条件,条件为真返回值,不为真的返回)函数有三个参数,第一个是条件,第二个是条件为真的返回值或语句,第三个是条件不为真的返回值或语句,例如 if(1=1,"true","false")
    CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。
    lenght()计算字符串长度

    @@tmpdir
    @@datader
    @@basedir
    @@version
    @@hostname

    联合查询,可以用做信息收集
    selece * from users where id=1 union select 1,2,3
    查询语句是前边语句没有的值,就会显示联合查询后的语句的值

    mysql数据库中的,一库一表三字段
    mysql大于5.0,information_schema库,系统库汇总,其他数据库的库名,表名,字段名
    columns表,储存数据库名表名字段名
    关注columns表下的字段
    table_schema ,其他数据库的库名
    table_name,其他数据库的表名
    column_name,其他数据库的字段名

    手工注入
    1,检测注入点(可能存在sql注入的地方),找到类似id(id/uid/typeid/sid/key)的参数,后面需要插入一些检测的恶意代码
    ’单引号
    “双引号
    ' and 1=1--
    0' or '1'='1
    需不需要引号,是由后台拼接的sql语句决定的,输入的恶意pyload被成功执行(根据页面和报错信息来确定),说明此处有sql注入点,
    接下来需要判断注入方式,报错,布尔,堆叠等,主要根据页面回显结果,来确定使用哪种注入方式,比如 sleep()基于时间,判断从后台数据库中选择的列数以及哪几列显示

    2,收集后台数据库信息,使用union等确定注入之后结果返回的位置,将会显示到前端的所在列的位置修改成先要看的信息,比如database() ,user(),colume

    3,获取当前数据库的表名,如 , SELECT DISTINCT GROUP_CONCAT(DISTINCT table_name) FROM information_schema.COLUMNS where table_schema='jdycms'

    4,获取当前数据库下的指定表下的字段名, 如 SELECT DISTINCT GROUP_CONCAT(DISTINCT column_name) FROM information_schema.COLUMNS where table_schema=database() and table_name='jdy_admin'

    5,获取值,select concat(username,0x7e,password) from jdy_admin

    6,解密,pmd5,cmd5,chamd5,somd5

    7,找后台登录,猜目录,信息收集,目录扫描

    cms内容管理系统
    cms名词,版本,漏洞,漏洞利用

    社工密码字典生成工具
    pydictor,强大的密码生成器
    cupper,针对国人的社工密码生成器
    wordhound,基于推特搜索,pdf文档,reddit子网站创建密码字典
    brutescrape,读取站点页面内容,分析页面,分析结果导出密码字典
    易优密码生成器
    在线生成

  • 相关阅读:
    H5小游戏的坑点小结
    禁用iOS的UIView长按默认操作
    chrome诡异的Provisional headers are shown
    手机浏览器音频内核的坑
    libuv在cocos2d-x中的使用
    windows下codelite的使用
    windows下clang的安装与使用
    ztree选父不选子选子不选父
    <c:forEach>判断第一条或最后一条记录
    iframe高度自适应的方法
  • 原文地址:https://www.cnblogs.com/sym945/p/11715315.html
Copyright © 2011-2022 走看看