SQL注入时order by 后面加数字的作用

(此文章是记录本人对知识理解的随手笔记,内容不肯定百分百正确,如有错误望指出并谅解)

结论:

order by 后面加数字可以判断服务器在查询某个表时所查询的列数。

原理:

1、当sql查询语句为:

select username,password,uid from tbl_user order by 1;

就按照查询的第一个字段(即username字段)进行排序 ,此时SQL语句不会报错

2、当 order by 2 时,就按照查询的第二个字段(即password字段)进行排序 ,此时SQL语句也不会报错

3、当 order by 4 时,就按照查询的第四个字段进行排序,可是SQL语句中没有查询的第四个字段,查询的字段最多到第三个(即uid),所以SQL语句会报错

4、我们就可以根据页面有没有显示报错来判断查询的字段数有多少个。

例子:


当输入为order by  1 时,没有报异常(图为sqli-labs闯关1的页面),此时我们加大数字

当输入为 order by  2 时,还是没有报异常,此时我们继续加大数字

当输入为 order by  3 时,没有报异常,此时我们继续加大数字

当输入为 order by  4 时,网页出现报异常了,这就说明查询的字段只有三个

参考文章:

https://blog.csdn.net/qq_44159028/article/details/114809458

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入中,"ORDER BY"是一种常用的攻击手法之一。它通常用于利用应用程序对SQL查询结果的排序方式进行操作,从而获取额外的信息或者绕过安全措施。 "ORDER BY"子句用于对查询结果进行排序。它可以按照一个或多个列进行排序,并指定升序(ASC)或降序(DESC)。在正常情况下,应用程序会根据用户的选择或者默认设置来构建"ORDER BY"子句。 然而,在SQL注入攻击中,攻击者可以通过构造恶意输入来修改"ORDER BY"子句,以达到他们的目的。以下是一些常见的SQL注入中的"ORDER BY"攻击技巧: 1. 利用错误消息:攻击者可以通过在"ORDER BY"子句中使用不存在的列名或者无效的排序方式来触发错误消息。这些错误消息可能会泄露数据库的结构信息,如表名、列名等。 2. 盲注攻击:攻击者可以通过使用布尔逻辑来判断某个条件是否成立,从而逐位地猜测查询结果。例如,通过使用"ORDER BY"子句来判断某个列的值是否大于或小于某个特定值。 3. 间延迟攻击:攻击者可以通过在"ORDER BY"子句中使用间延迟函数,如SLEEP()或BENCHMARK(),来延长查询的执行间。这可以用于判断某个条件是否成立,或者用于拖慢应用程序的响应间。 为了防止SQL注入攻击中的"ORDER BY"攻击,开发人员应该采取以下措施: 1. 使用参数化查询或预编译语句:这可以防止攻击者通过注入恶意代码来修改"ORDER BY"子句。 2. 输入验证和过滤:对用户输入进行严格的验证和过滤,确保只允许合法的输入。 3. 最小权限原则:将数据库用户的权限限制在最小必需的范围内,以减少攻击者可以利用的漏洞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值