热点推举深入浅出Nginx,如何做到高并发下的高效处理?如何做到热支配?推举27个Mybatis-Plus精良案例foreach循环中为什么不要进行remove/add操作微做事架构如何担保安全性?
SQL注入,get,post,cookie攻击怎么实战?01序言在讲SQL注入,get,post,cookie攻击怎么实战?之前,我们先过一下SQL注入观点,然后从理论的角度大略剖析一下get,post,cookie攻击,至于攻击的工具等更深入的东西只能大家各自去理解了。
sql注入(SQL Injection)_百度百科:
所谓SQL注入,便是通过把SQL命令插入到Web表单提交或输入域名或页面要求的查询字符串,终极达到欺骗做事器实行恶意的SQL命令。详细来说,它是利用现有运用程序,将(恶意)的SQL命令注入到后台数据库引擎实行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去实行SQL语句。比如先前的很多影视网站透露VIP会员密码大多便是通过WEB表单递交查询字符暴出的,这类表单特殊随意马虎受到SQL注入式攻击。
SQL注入攻击指的是通过构建分外的输入作为参数传入Web运用程序,而这些输入大都是SQL语法里的一些组合,通过实行SQL语句进而实行攻击者所要的操作,其紧张缘故原由是程序没有细致地过滤用户输入的数据,致使造孽数据侵入系统。
02get|post攻击实战以JSP+SQL Server环境为例,对付一个正常的登录表单,输入精确的账号和密码之后,JSP程序会查询数据库:如果存在此用户并且密码精确,将会成功登录;如果用户不存在或者密码禁绝确,则会提示账号或密码缺点。
然而当输入用户名: ‘or 1=1–,密码为空时,却创造可以正常登录,显然数据库中不存在这样一个用户。
实际上,登录处终极调用代码如下:
public boolean findAdmin(Admin admin)
{
String sql = \"大众select count() from admin where username='\公众 + admin.getUsername() + \公众'and password='\公众 + admin.getPassword() + \"大众'\"大众 //SQL查询语句
try {
Resultset res = this.conn.creatStatement().executQuery(sql);
//实行sql语句
if(res.next())
{
int i = res.getInt(1);//获取第一列的值
if (i>0)
{return true;} //如果结果大于0,则返回true
}
} catch (Exception e) {
e.printStackTree();//打印非常信息
}
return false;
}
上面程序段的意义很清楚:在数据库中查询username=xxx and password=xxx的结果个数。如果结果个数大于0,表示存在这样的用户,返回true,代表登录成功,否则返回false,代表登录失落败。
这段代码本身没有什么缺点。正常情形下,当一个用户 username='test'且password='test'时,实行了sql语句
select count() from admin where username = 'test' and password = 'test'
但是当输入username=\公众'or 1=1--\"大众时,在java程序中String类型变量sql 为
\"大众 select count() from admin where username = ' 'or 1=1-- ' and password = ' ' \"大众
这句sql语句在实行时,\公众--\公众 将\"大众and\"大众及之后的语句都注释掉了,相称于实行了
select count() from admin where username = ' 'or 1=1
而1=1是永久为true的,以是该语句的实行结果实际上是admin表的行数,而不是符合输入的username和password的行数,从而顺利通过验证。
这个例子中虽然注入的过程非常大略,但可能的危害却很大。如果在用户名处输入
\公众' or 1=1; drop table admin --\公众
由于SQL Server支持多语句实行,就可以把admin表drop掉了,后果不堪设想。
03cookie攻击实战Cookie注入大略来说便是利用Cookie而发起的注入攻击。从实质上来讲,Cookie注入与传统的SQL注入并无不同,两者都是针对数据库的注入,只是表现形式上略有不同罢了。
要想深入理解Cookie注入的成因,必须要理解ASP脚本中的request工具。它被用来获取客户端提交的数据。先来看下ASP开拓文档中对request工具的描述,如图1所示:
Request工具的利用方法一样平常是这样的:request.[凑集名称](参数名称),比如获取从表单中提交的数据时可以这样写:request.form(\"大众参数名称\"大众),但ASP中规定也可以省略凑集名称,直接用这样的办法获取数据:request(\"大众参数名称\"大众),当利用这样的办法获取数据时,ASP规定是按QueryString、Form、Cookies、ServerVariables的顺序来获取数据的。这样,当我们利用request(\"大众参数名称\"大众)办法获取客户端提交的数据,并且没有对利用request.cookies(\"大众参数名称\"大众)办法提交的数据进行过滤时,Cookie注入就产生了。
Cookie注入范例步骤
上面我们先容了Cookie注入的干系知识,下面我们来看如何确定一个网站是否存在Cookie注入漏洞。
1.探求形如“.asp?id=xx”类的带参数的URL。
2.去掉“id=xx”查看页面显示是否正常,如果不正常,解释参数在数据通报中是直接起浸染的。
3.清空浏览器地址栏,输入“javascript:alert(document.cookie=\"大众id=\公众+escape(\"大众xx\"大众));”,按Enter键后弹出一个对话框,内容是“id=xx”,然后用原来的URL刷新页面,如果显斧正常,解释运用是用Request(\"大众id\"大众)这种办法获取数据的。
4.重复上面的步骤,将常规SQL注入中的判断语句带入上面的URL:“javascript:alert(document.cookie=\"大众id=\公众+escape(\公众xx and 1=1\"大众));”
“javascript:alert(document.cookie=\公众id=\"大众+escape(\"大众xx and 1=2\"大众));”。
和常规SQL注入一样,如果分别返回正常和不正常页面,则解释该运用存在注入漏洞,并可以进行cookie注入。
5.利用常规注入语句进行注入即可。
详细案例我就不举例了,彷佛网上都有。
04攻击工具HavijPangolinSQLmap详细怎么玩,自行理解即可。
05注入总结上面我们以攻击者的视角大略讲述了SQL注入攻击,但我们的目的不是为了去攻击别人,而且为了更好的防御。俗话说“心腹知彼,百战不殆”,只有理解了攻击者是如何攻击的,我们才能更有效地防御。
请留下你指尖的温度
让太阳拥抱你
记得这是一个有温度的头条号
print_r('点个好看吧!
');
var_dump('点个好看吧!
');
NSLog(@\"大众点个好看吧!
\公众);
System.out.println(\"大众点个好看吧!
\"大众);
console.log(\"大众点个好看吧!
\"大众);
print(\公众点个好看吧!
\公众);
printf(\"大众点个好看吧!
\n\公众);
cout << \公众点个好看吧!
\公众 << endl;
Console.WriteLine(\"大众点个好看吧!
\"大众);
fmt.Println(\公众点个好看吧!
\公众);
Response.Write(\公众点个好看吧!
\"大众);
alert(\公众点个好看吧!
\"大众)
echo \"大众点个好看吧!
\"大众