• sqli-labs day1(2)


    回顾和增加基础知识
    url编码:一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加个%
    空格是%20,单引号是%27, 井号是%23,双引号是%22
    判断sql注入(显错和基于错误的盲注):单引号,and 1=1  和 and 1=2,双引号,反斜杠,注释等
    判断基于时间的盲注:在上面的基础上,加个sleep函数 ,如sleep(5) (函数不同数据库有所不同) 例子:   ' and sleep(5)  
     
    sql注入的基本步骤
    (跟sqlmap的步骤基本一致)
    1.判断是什么类型注入,有没过滤了关键字,可否绕过
    2.获取数据库用户,版本,当前连接的数据库等信息
    3.获取某个数据库表的信息
    4.获取列信息
    5.最后获取数据
     
    回顾:真正查询数据库的各种信息时,发现位置不够用,需要使用数据库链结函数,常用的有concat和concat_ws,其中concat_ws的第一个参数时连接字符串的分隔符,还会用到group_concat把查询出来的多行连接起来。
    concat_ws()的第一个参数会被html编码,所以使用char函数将十进制ASCII码转化成字符,如char(58)对应 :
    用的较多的是 
    concat_ws(char(32,58,32),user(),database(),version())
     
    复习mysql_fetch_array()函数
    mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有。 返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。
     
    重复了一下less1的操作后,开始接下来的学习,因为less1的基础讲的比较详细,接下来就直接操作了
    less2 基于错误的GET整型注入
    payload
    ?id=1 union select 1,2,concat_ws(char(32,58,32),dataname(),id,username,password) from users%23
     
    less3 基于错误的GET单引号变形字符型注入
    首先加个单引号 报错如下

    可以看到报错那里多了一个),这就是单引号注入的变形,可以推理出对应的左边也应该有个(
    把包住错误sql语句的单引号去掉可以看到错误的sql语句是 '1'') LIMIT 0,1
    1的右边多了个' 所以代码应该是id=('$id') 看一下代码确实是这样

    得出payload:

    less 4 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)

    首先加了个' 没有报错,原因是php中双引号可以包含单引号
     
    这个让我想到了之前几次实验没有注意这个问题,看了下代码发现真的都是被单引号包着!
    所以这次使用双引号看报错
    发现右括号,推理原代码为:id=("$id")
    查看代码发现变量上没有双引号
    但是不影响注入
    pyload:
    ?id=0") union select 1,concat_ws(char(32,58,32),id,username,password),3 from users  limit 1,1--+
  • 相关阅读:
    个人作业——软件评测
    软件工程第五次作业——结对编程的实现
    软件工程第三次作业
    软件工程第一次作业
    两个矩形面积交
    二维并查集
    Java 作业 1
    练习题
    线性表

  • 原文地址:https://www.cnblogs.com/wxylyw/p/9799678.html
Copyright © 2020-2023  润新知