您的位置:首页 > 编程语言 > ASP

OWASP TOP 10 之 SQL注入

2020-03-25 07:48 1236 查看

一、什么是SQL注入

SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。假设某网站页面显示时URL为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机。-------百度百科

二、常用数据库注入相关函数

字符串连接函数
·concat
select concat(name,‘|’,password) from users;
在users表中将name,password删选出来,并用|分割,但是在这几个表象中有一个是null,结果就是null。
·concat_ws
select concat_wa(’|’,name,password) from users;
结果同上,只是指定分隔符的方式不同。另外,只有第一个参数为空时,返回结果才为空。若非第一个参数,空值将被忽略。
·group_concat
select group_concat(username) from users;
是将users表中的username拼接以一个结果显示(限制长度为1024.)。
字符串截取函数
·substring(要操作的字符串,截取的第一个字符位置,截取字符长度)
select substring((select username from users limit 0,1),2,3;//从第2个位置开始,截取长度为3;与数组不同的是,计数从1开始。
mid(要操作的字符串,截取的字符位置,要截取的字符长度)
select mid(‘test123’,2,3);结果为est;
left(‘要操作的字符串’,截取长度)
select left(‘test123’,3);结果为tes;
right
select right(‘test123’,3);结果为123;
locate(‘字符串1’,‘字符串2’);
select locate(‘test123’,‘asjffdnjbtest123jfshoa’);返回字符串1,在字符串2中的位置;
返回指定数字对应的ASCII码字符
char
SELECT char(97);
返回a;
返回指定ASCII字符对应的数值
ascii(时间盲注,布尔盲注),ord
SELECT ascii(‘a’);返回97;
SELECT ascii(substr((SELECT username FROM users limit 0,1),2,1) );
字符串替换
replace
SELECT replace((SELECT username FROM users limit 0,1),‘lili’,‘haha’);//第二个参数是将要被替换的内容,第三个参数是被替换后的内容;
相关计算
length,count
SELECT length(‘ghuji’);返回5;在盲注的时候,可以计算出字段的长度。
SELECT count(*) FROM users;
返回记录的数目;
时间盲注用到的函数
sleep ,if
SELECT * FROM users union SELECT 1,2,sleep(10);在注入时,没有办法判断语句是否执行等情况;
读写文件函数
into outfile,into dumpfile
要求是root权限,已知根目录;可以写文件;
load_file(“文件路径”);读取文件内容;

  • 点赞
  • 收藏
  • 分享
  • 文章举报
猫耳小羊驼 发布了2 篇原创文章 · 获赞 0 · 访问量 33 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: