热点推举深入浅出Nginx,如何做到高并发下的高效处理?如何做到热支配?推举27个Mybatis-Plus精良案例foreach循环中为什么不要进行remove/add操作微做事架构如何担保安全性?

SQL注入,get,post,cookie攻击怎么实战?01序言

在讲SQL注入,get,post,cookie攻击怎么实战?之前,我们先过一下SQL注入观点,然后从理论的角度大略剖析一下get,post,cookie攻击,至于攻击的工具等更深入的东西只能大家各自去理解了。

sql注入(SQL Injection)_百度百科:

jsp用户名密码传入数据库SQL注入getpostcookie进击怎么实战 PHP

所谓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 \"大众点个好看吧!
\"大众