当前位置:首页 » 编程语言 » sql注入文件写入
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql注入文件写入

发布时间: 2022-08-08 01:48:35

‘壹’ 网站如何防止sql注入攻击的解决办法

首先我们来了解下什么是SQL注入,SQL注入简单来讲就是将一些非法参数插入到网站数据库中去,执行一些sql命令,比如查询数据库的账号密码,数据库的版本,数据库服务器的IP等等的一些操作,sql注入是目前网站漏洞中危害最大的一个漏洞,受攻击的网站占大多数都是sql注入攻击。

sql注入攻击用英语来讲Structured Query Language,在网站的编程语言当中是一种比较另类的网站开发语言,我们网站安全行业通常来讲sql是用来数据库查询的一种网站开发语言,同时也是一种脚本文件的一个文件名,通俗来讲sql就是用来对网站的数据库进行查询,以及增加,写入,更新数据库的一个sql数据库操作。

关于数据库我们分为2种数据库,一种是关系数据库,非关系数据库,那么目前网站使用的都是关系数据库,关系数据库分为sql数据库,microsoft sql server数据库,ACC数据库,mysql数据库,oracle数据库,DB2数据库,postgresql数据库等等的关系数据库,非关系数据库分为nosql数据库,可以存储很大数据,针对于一些并发较高,存储较多,云计算的场景,频繁读取写入的数据库,像memcachedb,redis,mongodb等等非关系数据库。

那么什么是sql注入呢? 简单来讲就是对网站强行进行插入数据,执行sql恶意语句对网站进行攻击,对网站进行sql注入尝试,可以获取一些私密的信息,像数据库的版本,管理员的账号密码等等。

关于如何防止sql注入攻击,我们从以下几点开始入手

首先我们可以了解到sql注入攻击都是通过拼接的方式,把一些恶意的参数拼接到一起,然后在网站的前端中插入,并执行到服务器后端到数据库中去,通常我们在写PHP网站代码的时候会将get ID这个参数值获取到后直接拼接到后端服务器中去,查询数据库,但是如果拼接了一些恶意的非法参数,那么久可以当做sql语句来执行,如果防止sql注入呢?

为了防止网站被sql注入攻击,我们应该从一开始写代码的时候就应该过滤一些sql注入的非法参数,将查询的一些sql语句,以及用户输入的参数值都以字符串的方式来处理,不论用户输入的什么东西,在sql查询的时候只是一段字符串,这样构造的任何恶意参数都会以字符串的方式去查询数据库,一直恶意的sql注入攻击就不会被执行,sql注入语句也就没有效果了,再一个就是网站里的任何一个可以写入的地方尽可能的严格过滤与限制,漏下一个可以输入的地方网站就会被攻击,网站就会被黑,所有做的网站安全就会没有效果,包括一些get,post,cookie方式的提交都是不可信的,像数据表里referer user-agent等字段都是可以伪造,写入sql注入语句的,像前端时间爆发的ecshop漏洞利用的就是user.php,伪造referer参数进行了sql注入,执行了远程代码。

再一个防止sql注入的方法就是开启PHP的魔术配置,开启安全配置模式,将safe_mode开启on.以及关闭全局变量模式,register_globals参数设置为on,magic_quotes_gpc参数开启,防止sql注入.如果对网站防止sql注入不懂的话,也可以找专业的网站安全公司来做安全,防止sql注入。

‘贰’ 防止SQL注入,怎么把管理员信息写到登陆验证文件中

就是说在代码中使用字符串常量了,这是一种很原始的方法.比如
if(username=="admin"){...}
if($_POST["username"]=="admin"){...}
If Request.Form("username")="admin" Then
不知道你用什么语言.随便写了几行.

‘叁’ 关于sql手动注入

1.判断有无注入点
; and 1=1 and 1=2
2.猜表一般的表的名称无非是admin adminuser user pass password 等..
and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) —判断是否存在admin这张表
3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)
4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.

‘肆’ 什么是SQL语句注入该如何防止数据SQL数据注入

sql 注入:

就是通过表单将包含sql命令的信息发送至后台,后台将这些信息按照sql命令的方式,得到运行,那么我们称这种行为为sql注入。

如下所示:sql注入漏洞防止方法

参数化是目前sql注入防止的最佳方法。

请参阅,如有疑问,请及时沟通!

‘伍’ 跪求SQL手工注入语句及原理

先举个例子,你要登录一个网站,上面让你输入用户名字和密码。那么,假如你输入的用户名是 admin ,但是你不知道密码,你就输入了一个 1' OR '1' = '1 ,那么,你就提交了两个参数给服务器。假如,服务器拿这两个参数拼SQL语句:SELECT T.* FROM XXX_TABLE TWHERE T.USER_ID = '/*param1*/'AND T.PASSWORD = '/*param2*/'那么,你提交的两个参数就使SQL文变成了:SELECT T.* FROM XXX_TABLE TWHERE T.USER_ID = 'admin'AND T.PASSWORD = '1' OR '1' = '1'那么,这个SQL原来的校验功能就被你绕过去了,你的这种行为就称之为SQL注入。

‘陆’ 什么是SQL注入

给你推荐个软件,用几天就熟悉SQL注入了。
-----------------------------------------------------------------

WebCruiser - Web Vulnerability Scanner (Web应用漏洞扫描器)
WebCruiser - Web Vulnerability Scanner, a compact but powerful web security scanning tool! It has a Crawler and Vulnerability Scanner(SQL Injection, Cross Site Scripting, XPath Injection etc. ). It can support not only scanning website, but also Prooving of concept for web vulnerabilities: SQL Injection, Cross Site Scripting, XPath Injection etc. WebCruiser是一个小巧但功能不凡的Web应用漏洞扫描器,它能够对整个网站进行漏洞扫描,并能够对发现的漏洞(SQL注入,跨站脚本,XPath注入等)进行验证;它也可以单独进行漏洞验证,作为SQL注入工具、XPath注入工具、跨站检测工具使用。

功能简介:
* 网站爬虫(目录及文件);
* 漏洞扫描(SQL注入,跨站脚本,XPath注入);
* 漏洞验证(SQL注入,跨站脚本,XPath注入);
* SQL Server明文/字段回显/盲注;
* MySQL字段回显/盲注;
* Oracle字段回显/盲注;
* DB2字段回显/盲注;
* Access字段回显/盲注;
* 管理入口查找;
* GET/Post/Cookie 注入;
* 搜索型注入延时;
* 自动从自带浏览器获取Cookie进行认证;
* 自动判断数据库类型;
* 自动获取关键词;
* 多线程;
* 高级:代理、敏感词替换/过滤;
* 报告;
---------------------------------------------------
Function:
* Crawler(Site Directories And Files);
* Vulnerability Scanner(SQL Injection, Cross Site Scripting, XPath Injection etc.);
* POC(Proof of Concept): SQL Injection, Cross Site Scripting, XPath Injection etc.;
* GET/Post/Cookie Injection;
* SQL Server: PlainText/FieldEcho(Union)/Blind Injection;
* MySQL/Oracle/DB2/Access: FieldEcho(Union)/Blind Injection;
* Administration Entrance Search;
* Time Delay For Search Injection;
* Auto Get Cookie From Web Browser For Authentication;
* Report Output.

‘柒’ SQL语句注入

简单举例,某登录界面用 select 1 from tabUser where username = @val1 and password = @val2 来验证输入的用户名密码是否有效,只有两者都正确才会返回 1.

如果你在密码输入框(@val2 )输入 abc or 1 = 1,那么整个语句就变成 ... where .. and ... or 1=1,很明显,这条语句总是会返回 1 的。

结果就是虽然没有正确的用户名密码,但成功登录了。

‘捌’ 动网7.1 sql版最新注入漏洞的详细利用以及如何在后台获取webshell

我就给大家讲几个常用的webshell获取方法。
1 上传
说到上传获得webshell,就不得不提大名鼎鼎的动网7.0SP2之前的文件上传漏洞了,那可是连官司方都没能幸免于难的啊!其中的成因吗不太好说,大概地说就是字符截断的问题。我们还是来看看怎么利用吧。这里我们要请出老兵的万能上传工具呢(图76),为什么叫万能上传工具呢?很简单,因为连大名鼎鼎的动网论坛都没有注意到这个严重漏洞,其它许多系统自然也避免不了,所以说这个工具是“万能”的,下面我们找一个没打过SP2补丁的dvbbs,注册一个帐号,登录进去后看有没有禁止上传,如果没有禁止,我们就是提取当前cookies保存起来(怎么提取?又忘了不是,前面不是说过可以用修改cookies浏览器提取吗?)然后在万能上传工具处填好漏洞url,欲上传的文件和cookies等信息(图77),点“上传”,不一会就提示成功了(图78),我们现在来访问这个上传后的文件,看,是不是得到一个shell呢(图79)
当然,并不是所有的系统都能用这个方法上传的。下面我再总结几个常见的上传方法。
1、进入后台直接上传。有些系统对管理员可是十分信任的哦,进了后台只要找到有上传的地方你就可以直接选匹马放上去,绝不会有任意阻拦(图80)。
2、添加上传类型上传。如果不能直接上传,可找找看有没有添加上传类型的地方,有的话添加一个ASP就可以了。当然,有些系统在代码中就限定了不允许上传ASP文件,不要紧,我们可以添加允许上传ASA、CER等文件,然后把.asp的后缀改为ASA或CER上传,一样可用的(图81)。
3、抓包上传。这里就要利用Win2000的一个小漏洞了,如果文件名的结尾是空格或“.“号,那么windows会自动把这个符号“吃”掉。那么,我们就可以添加允许上传“ASP ”文件,注意ASP后有个空格,ASP 可不等于ASP啊,所以代码里的限制就没用了。然后我们来到文件上传界面,选择一个ASP文件,先别上传。我们打开抓包工具Wsock Expert(图82),选择监控IE的上传窗口,然后回到上传界面,点击上传,提示上传失败。预料之中。我们来到Wsock Expert,找到刚才提交的数据包(图83),看到那个mm.asp没有,我们在这个后面加个空格,再用NC提交,成功上传!
4、利用表单冲突上传。用这个方法最典型的就是动力3.51的上传了。我们同样注册一个用户,来到发表文章处。切换到“源代码”模式,输入下面的代码:
<FORM name=form1 onsubmit="return check()" action=upfile_article.asp method=post encType=multipart/form-data><INPUT class=tx1 type=file name=FileName> <INPUT class=tx1 type=file name=FileName><INPUT style="BORDER-RIGHT: rgb(88,88,88) 1px double; BORDER-TOP: rgb(88,88,88) 1px double; FONT-WEIGHT: normal; FONT-SIZE: 9pt; BORDER-LEFT: rgb(88,88,88) 1px double; LINE-HEIGHT: normal; BORDER-BOTTOM: rgb(88,88,88) 1px double; FONT-STYLE: normal; FONT-VARIANT: normal" type=submit value=上传 name=Submit></FORM>
再来到“预览”模式,是不是看到了两个选择上传文件的框却只有一个上传按钮啊(图84)?我们在第一个框处选择一个ASP文件,第二个框处选择一个jpg文件,然后点上传。可能会提示冲突,但我们返回“源代码”模式,就可以看到我们上传后的Webshell地址了。
5、利用代码对文件类型的限制上传。现在许多代码为了安全都限制了上传ASP文件,但一些代码的限制方法实在令我不敢恭维。我见过有些代码的限制方式是一遇到ASP就把它去掉的。那么,我们完全可以添加一个上传类型“ASASPP”,这样一来,在上传过程中代码会把中间为ASP去掉,后缀的自然也就变为ASP的了。
6、利用其它上传工具。老兵的万能工具虽名为万能,但因为有些系统的上传代码与动网的是有差异的,所以这个工具对它就失效了。我这里还收集了别的一上上传利用专用程序。比如去缘雅境的,操作起来也十分简单,相信大家都会用的。
(2)写入过滤不完全,
因为现在许多系统都是可以用FSO功能直接写入其文件的,如果写入文件的过滤不完全,也可以直接往里写个webshell,如动易的conife.asp。这里我要讲的是leadbbs后台友情链接添加处写入webshell,我们来到后台的添加友情链接处,点“新增友情链接”(图85),然后在“网站名称处填上冰方后浪子微型ASP后门式海洋的一句话木马,其它乱填(图86),然后我们用客户端连接,成功了吧!(图87)
除了对文件写入的过滤外,还有对数据库写入的过滤。当我们暴库得知数据库后缀为ASP,但用网际快车能下载时,我们就可以确定这个数据库里不包含ASP语句,那么我们只要找到一个可以写入数据库的地方,写入一句话木马,再用客户端连接,一样可以成功的。
3、后台备分及恢复
说起后台的备分和恢复获取webshell,我可算是颇有研究,也可以说是从这里起步学习技术的,先说说常规的方法吧,一般地,我们就是把一个ASP木马改为gif后缀上传,然后记下上传后的地址,下面,我们来到数据备分页面(图88),在“数据库路径”处填自己刚才上传的文件名,在“备分后路径”处填自己想要种马的地址,注意后缀为ASP(图89),点“备分”后我们就得到了自己想要的webshell。
但是,如果像动力一样不允许定义当前数据库地址呢?一样可以的,我们通过暴库术式后台看到动力的数据库地址,因为ASP的话,我们一样可以把一个ASP木马改为gif的型式,然后上传,现在,我们来到“数据库恢复”页面,看到没有,可以自定义恢复数据库的路径(图90),我们选择我们刚才上传的文件路径,恢复(图91),恢复成功后整个系统是用不了,但我们只须直接访问数据库地址就可以得到webshell了,当然,为了不被别人发现最好还是先把数据库备分好,得到shell后再用shell恢复回去。
上面一般说的方法就是我发表的第一篇文件《利用ACCESS得到webshell一文的补充》,至此,数据备分和恢复的利用似乎完了,其实还没有,还是那个动力系统,如果我们无法得到数据库地址,或者数据是mdb的,出放到了web外,我们不就用不了上面的方法了吗?
别急,再绕个弯子,我们来仔细看看这个动力系统,备分处限制了只能备分当前的数据库,不能备分其它文件,且备分后文件后缀限为ASA,但可以自定义文件名。恢复处只能把数据恢复到当前数据库文件,如果遇上本段开头提的那三种情况,我们把一个shell恢复出来也是没用的。既然不能直接弄出来,我们就老老实实恢复一个比较正常的数据吧。说是比较正常,那是因为这个数据库虽然对系统没有影响,但还是做过一些手脚的。
我们拿一个相同系统的空数据库,把<%nodownload%>表中的内容改为一句话木马(图92),然后再在后台添加允许上传MDB文件,上传。下面到数据恢复处把刚上传的文件恢复回去,这时系统仍是正常运行的。我们重新用默认的用户名admin,密码admin888登录后,再到数据备分的地方,把数据备分出来,然后用客户端连接这个备分的文件就可以了。
对于限制没那么严的动网,我们可以直接备分就行了。虽然7.1中对备分处做了限制(图93),但恢复处可设限制(图94),条件比动力宽松多了。
4、SQL导出。对于有注入点的SQL站点,我们还可以用黑客界中的丐帮帮主——就是那个臭要饭的发明的SQL写入导出大法得到webshell,其原理是在知道网站物理路径的情况下通过往SQL数据库中写入一个带木马的表,再将这个表导出,就得到webshell了。为了不让管理人员发现,我们还要删掉这个新建的表。那个臭要饭的还专门对此写了工叫getwebshell的工具(图95),使用起来也并不复杂,我也就不再说了。

‘玖’ 如何对一个网站进行SQL注入攻击

1.POST注入,通用防注入一般限制get,但是有时候不限制post或者限制的很少,这时候你就可以试下post注入,比如登录框、搜索框、投票框这
类的。另外,在asp中post已被发扬光大,程序员喜欢用receive来接受数据,这就造成了很多时候get传递的参数通过post/cookie也
能传递,这时如果恰好防注入程序只限制了get,因此post注入不解释
2.cookie注入,原理同post注入,绕过相当多通用防注入
3.二次注入,第一次注入的数据可能不会有效,但是如果将来能在某个页面里面被程序处理呢?注入来了……
4.csrf,适合后台地址已知并且存在已知0day,可以试试用csrf劫持管理员来进行操作(这招其实不属于sql注入了)
5.打碎关键字,比如过滤select,我可以用sel/**/ect来绕过,这招多见于mysql
6.有时候也可以sELeCT这样大小写混淆绕过
7.用chr对sql语句编码进行绕过
8.如果等于号不好使,可以试试大于号或者小于号,如果and不好使可以试试or,这样等价替换
9.多来几个关键字确定是什么防注入程序,直接猜测源码或者根据报错关键字(如"非法操作,ip地址已被记录")把源码搞下来研究
10.记录注入者ip和语句并写入文件或数据库,然而数据库恰好是asp的,插马秒杀

‘拾’ sql注入攻击与防御是什么

SQL注入攻击:

恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对用户输入内容过分信任而未对恶意用户插入的SQL语句进行过滤,导致SQL语句直接被服务端执行。

SQL注入攻击分类:

①注入点的不同分类:数字类型的注入、字符串类型的注入。

②提交方式的不同分类:GET注入、POST注入、COOKIE注入、HTTP注入。

③获取信息方式的不同分类:基于布尔的盲注、基于时间的盲注、基于报错的盲注。

SQL注入攻击防御方法:

①定制黑名单:将常用的SQL注入字符写入到黑名单中,然后通过程序对用户提交的POST、GET请求以及请求中的各个字段都进行过滤检查,筛选威胁字符。

②限制查询长度:由于SQL注入过程中需要构造较长的SQL语句,因此,一些特定的程序可以使用限制用户提交的请求内容的长度来达到防御SQL注入的目的,但这种效果不太好。

③限制查询类型:限制用户请求内容中每个字段的类型,并在用户提交请求的时候进行检查,凡不符合该类型的提交方式就认为是非法请求。

④白名单法:该方法只对部分程序有效,对一些请求内容相对固定的程序,可以制定请求内容的白名单,比如:某程序接受的请求只有数字,且数字为1-100,这样可以检查程序接受的请求内容是否匹配,如果不匹配,则认为是非法请求。

⑤设置数据库权限:根据程序要求为特定的表设置特定的权限,如:某段程序对某表只需具备select权限即可,这样即使程序存在问题,恶意用户也无法对表进行update或insert等写入操作。

⑥限制目录权限:Web目录应至少遵循可写目录不可执行,可执行目录不可写的原则;在此基础上,对各目录进行必要的权限细化。