小迪安全笔记 第四十四天 sql盲注 && 实战利用sql盲注 进行漏洞的利用 ...

打印 上一主题 下一主题

主题 1007|帖子 1007|积分 3021

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
sql盲注的分类

什么是盲注    就是我们什么也不知道的情况下进行的注入   前边的注入  都是简单的注入   我们猜测 数据类型  之后 可以直接  union  去查    这种情况多用于   数据库增删查改中的 查    
bool盲注也用于查   这个的情况的就是我们前边都试了 没有效  就必要盲注了  (下边的实战是白盒测试)
而 增编削   就要我们 进行 耽误注入和报错注入 
1、bool盲注   

布尔盲注 就是利用一些逻辑函数  来爆取数据库的一些信息
演示一下  最简单的布尔 
条件  :bool盲注的条件是    1、数据库的内容进行回显 
我们看一下  这类的源码
    
了解一下  利用方法
  函数 length (str)= "  "       他的作用就是显示字符串的长度   
SELECT * from admin WHERE id=1  AND LENGTH(DATABASE())='4' ;   
  
我们实行上边我的那个语句   直接出来的表是空的呀

我们写对字符串长度之后

把表输出了呀   那这个目的是什么呀   :  就是用来猜数据库名的长度的  ?   猜到了长度我们怎么知道他是什么名呀 ?
还必要一个函数   left 函数(从左到右逐个读取)   他的作用就是根据长度猜名字    用法 :  left(database(),1)=a  //这个表示猜测database的第一位是a(因为这个)    再继续猜就得
演示一下

输入正确的  字母之后 查询可以继续进行  要是错误的
 
就不会输出数据      注意一点就是查第二位的时间 要把我们第一位猜正确的写上

SQL中字符串截取函数(SUBSTRING)_sql substring-CSDN博客
bool盲注  假如数据不回显直接就   鸡鸡了  但是别急 下边有金牌辅助
上边另有这个 substr 截取函数  这个在第四十天的笔记
延时注入(if  sleep)

原理就是   sleep这个函数会在我们实行语句的时间   耽误实行  这个要搭配   if判定语句
if判定     举个例子     if(1=1,2,3)  假如1=1正确就实行2   假如不成功就实行  3 
这个多用来判定注入点   就是当我们的数据不会显的时间 我们可以这样注入  or if(1=1,sleep(5),0)  假如卡了   说明注入成功呀  那是不是结合 bool 盲注  就可以这样  :  or if(left(database(),1)='a',sleep(3),0)    卡了就说明我们猜对了一位
演示一下


报错回显

updatexml(xml旧的内容,路径,新的内容)   下边这个大佬讲的很明确不懂可以看看他的文章
updatexml函数-报错注入原理学习-CSDN博客
updatexml  第一个和第三个参数是可以任意写的     第二个参数就是我们要注入 的内容
报错回显的利用条件就是   可以没有数据的回显  但是必须有报错函数的利用

利用 pikachu  演示:

' and updatexml(1,version(),1) and '          payload

利用报错获取信息:获取了版本号    这里有个进阶的语句    就是这样我们获取版本号假如 报错很长的话   就无法  分清 那该怎么办呀    我们之前不是学了一个 假如我们查找的数据有类似的就不会输出   我们利用   group_concat  进行输出    如今我们利用  concat 进行输出
详解MySQL中CONCAT()函数的用法(链接字符串)_mysqlconcat-CSDN博客
因为这个可以控制输出(拼接字符串)   以是我们就可以在效果前边 加上  易于分别的字符  
' and updatexml(1,concat(0x7e,database()),1) and '  

那我们固然可以进一步去爆表
逻辑布尔注入

这个实在和  耽误差不多  就是这个必要数据回显    就是我们输错了   他会提示我们的那种
演示:演示一下逻辑报错     

我们直接利用  or的时间  就会报错    但是我们利用and  就会给我们实行数据库的操作    逻辑就是 or我们输入的kobe是存在的  但是  or  因为前边这个就是对的了  他就不会再去看后边的   
但是  and逻辑   就是  前边的是对的  后边照旧要进行的  为什么这个和前边的注入不一样啊  就是因为  这个是个  insert 类型的注入
 

利用逻辑判定  数据库的字母  substr 进行爆破注入 kobe' and substr(database(),1,1)='p'  #
只要逻辑对   就会有数据的回显      
说一声这个   substr(object,在那个位置截取字符,截取几个字符)    这个和上面的left的作用是类似的

爆破数据库表

涉及函数   exists函数    这个原意是预判定  语句  就是我们说   假如一个网站的访问量大于100  然后输出他的网站名     那后边这个就是有  exists进行实行 (为什么用它呀   就是他可以实行语句啊)
SQL EXISTS 运算符 | 菜鸟教程
kobe'  and exists(select * from a) #                 实行这个语句  演示一下爆破a

抓包   然后直接  发到   intruder  并对 aa 增加 payload  然后去添加字典  模式 选择狙击手就行  因为就一个   目标      这边好的字典各人可以直接去网上找我就任意写几个了


直接发到 repeater  

那不还可以接着爆破列呀是吧
sqlmap 办理盲注题目

sqlmap  资助我们进行sql盲注题目  :  你妹的手工注入真难啊  一遍一遍的猜  真难受   我们直接开启我们的 sqlmap之旅吧     
1、先找注入点
      把这个url复制一下
1、


2、 爆表  有注入点之后我们直接进行  爆表

3、  爆列名  

上边这个下令错了哈  下边这个是



直接拿下  哎呀照旧工具好用啊
实例  复现 delete 删除数据 漏洞

无回显  无报错的情况  那这个情况我们只能用什么 盲注啊   (耽误)
白盒测试  这个kkcms(源码在文末)

一个看片网站    那我们展示一下他的盲注吧(当地phpstudy 搭建网站我就不说了)

ctrl shift f  是全局搜刮的意思   这边我就不演示了再
搜到这个之后我们进入这个ad_edit  网站(这个是在admin目次下的以是必要  后天管理员账号暗码)为了直接复现  我直接说漏洞的位置
后台的这个登录删除 : 

点删除抓包

payload :直接注入在ID那里  %20and%20if(substr(database(),1,1)='k',sleep(2),null)%20
%20是空格url编码()的意思  这个语句没毛病吧   我去发送了怎么没耽误啊
我们(猜猜可能是有过滤)输出

这个实在是 php自带的一个防注入(转义的把戏方法)的的  就是我们的注入  的  'xxx'   会被写成    '\xxx'\   那这样还注入个毛啊 注入   ?   我们可以进行ascii码进行绕过 

or%20if(ascii(substr(database(),1,1)=107,sleep(2),null)      (这里有个细节就是 必须用or呀  否则就是逻辑题目  and 不会判定后边的东西)   进行一下 ascii的转换 为什么 进行这个呀   因为我们转换之后 ' ' 就没了   这个ascii码的转换  是常用的绕过  '  '   的方法 


​​​​​​​
总结

重要学了差别的盲注方法    bool  用于数据的回显    耽误因为它本身注意作用就是判定用的  以是数据回显和报错代码的存在对他没影响
黑盒测试:假如是黑盒我们必要可以找注入点直接工具  也可以分析
第二种就是 根据数据的回显和报错进行分别测试  从而选择  差别的注入方法
bool型(必要数据的回显)
报错型  (必要 error函数的出现)
耽误型   最全能的可能搭配 bool进行爆破
火狐渗透  蓝奏云优享版
kk源码   蓝奏云优享版

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表