注入解释型语言
解释型语言是一种在运行时组件解释语言代码并执行其中包含的指令的语言,同时,基于解释型语言的执行方式,产生了一种叫代码注入的漏洞,总而言之,这种注入解释型语言导致解释器处理的数据时由用户提交的数据和程序员编写的代码共同组成的。
注入sql
此处插播一个令人非常之费解的翻译:查询解释器以和前面一个示例相同的方式到达字符串数据位置,直接说解释器执行语句到字符串数据的位置不就好了...这本书的翻译为什么这么狗屎真是让人费解QAQ第三版能不能换一个人翻译啊。
利用一个基本的漏洞:
利用注释符将编写好的sql语句注释成为自己想要的请求 ,这种方法也称为构造万能密码。
wiley ' or 1=1--
//将执行以下语句
SELECT author,title,year FROM books WHERE publisher = 'wiley' OR 1=1--' and published=1
或者以下的方法也是可以的
wiley' or 'a' = 'a
//将执行以下的查询
SELECT author,title.year,FROM books WHERE publisher = 'whiley' OR 'a' = 'a' and published =1
同时我们也可以使用insert即插入语句进行查询字段:
有时候我们无法提前获取需要插入的value到底有多少或者参数的类型,此时我们可以利用1来进行注入
foo')--
foo',1,1,1)--
//格式:用户名,字段1,字段2,字段3....
以上这种方法的实行是因为大多数数据库都会隐式的将一个整数转换为字符串,如果使用值1遭到了拒绝,那我们可以尝试使用2000,这样也是可以的。
查明SQL注入漏洞:
实际上,替吉奥给服务器的任何数据都能以用户无法察觉的方式传递给数据库函数,并且可能得到不安全的数据,我们要检查URL参数,cookie,post数据项以及HTTP消息头来检查是否存在漏洞。
sql注入注入字符串数据渗透测试步骤:
1.提交一个单引号作为目标观察的数据,观察是否回造成错误。
2.如果发现错误,可以试着去提交两个单引号,其中一个单引号可以作为另外一个单引号的转义字符。
sql注入注入数字数据渗透测试步骤:
这种方法其实就是构造万能密码,也就是比如1=1这样的恒等式,同时我们也可以在数字化参数当中插入任意输入,如果发现这对结果没有产生什么影响,那么就可以证明这个地方存在Sql注入。
注意:如果单引号被过滤掉了,这时候我们可以使用ASCII码,比如:
67-ASCII('A')=2
51-ASCII(1)=2
这种方法非常的巧妙,因为在我们尝试将一个数字转化为数学表达式的时候,往往会被过滤掉单引号,上述第一个式子可以是万能密码的变形,也就是将数字数据的注入更换成字符串数据的注入,第二条就是为了避免单引号被过滤掉的情况,数据库在有必要的时候,会隐含地将数字数据转化为字符串数据,也就是同样的利用这种方法,我们也可以实现数字数据的注入。
在查询字符串时,我们不被允许使用空格,如果必须使用空格,我们需要对空格进行编码即为:+、%20等等。
在cookie中使用分号,可以将其编码为%3b
注入查询结构:
order by子句接受某个列名称或者编号,并根据该列对结果集进行排序。
orderby注入查询渗透步骤:
提供一系列在参数值中提交数字值的请求,从数字1开始,然后逐个请求递增。