MySQL时间盲注五种延时方法 (PWNHUB 非预期解)

延时注入函数

五种:sleep(),benchmark(t,exp),笛卡尔积,GET_LOCK() RLIKE正则

sleep()

sleep(x)select sleep(5);

session1

session2

get_lock:但是当会话1 get_lock 后,未释放。会话2 不get_lock 同一个key,或者就不get_lock,依然可以对数据进行任何操作,所以加锁只是说人为的主观的想要让某些操作同时只有一个连接能进行操作,别的连接不调用get_lock加同一个锁,那它不会受到任何影响,想干什么干什么。

session1

session2

优缺点分析 (1)这种方式对于更新所有列比较有效,但是得把查询的语句也放在锁内执行; (2)这种方式当客户端无故断线了会自动释放锁,比较好,不像redis锁那样,如果加完锁断了,那么锁一直在; (3)这种方式是针对锁内的所有操作加锁,并不针对特定表或特定行,所以使用了同一个Key的锁但不同的操作都会共用一把锁,会导致效率低下; (4)如果查询语句放在锁之前,则数据可能是旧的,更新之后会把查询之后更新之前别的客户端更新的数据覆盖掉;

RLIKE REGEXP正则匹配

通过rpadrepeat构造长字符串,加以计算量大的pattern,通过repeat的参数可以控制延时长短。

select rpad('a',4999999,'a') RLIKE concat(repeat('(a.*)+',30),'b');

RPAD(str,len,padstr)

用字符串 padstr对 str进行右边填补直至它的长度达到 len个字符长度,然后返回 str。如果 str的长度长于 len',那么它将被截除到 len个字符。

mysql> SELECT RPAD('hi',5,'?'); -> 'hi???'

⭐️寻找新的延迟函数

 concat(rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a')) RLIKE '(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+b'

更多相关文章

  1. 修改android系统和watchdog的延时
  2. Android(安卓)Calendar使用过程中遇到的问题
  3. Android执行shell命令
  4. Android中的AlarmManager的使用
  5. android获得系统时间(Handler)
  6. Android简易闹钟实现
  7. Android(安卓)时间滚轴
  8. [置顶] android 捕捉异常
  9. Android更新UI的五种方式

随机推荐

  1. Android中如何用好多线程
  2. [每日100问][2011-10-01]iphone开发笔记,
  3. Android_RelativeLayout属性
  4. Android消息处理机制(Handler)
  5. Android登录注册功能 数据库SQLite验证
  6. 《Android》Lesson17-用Fragment实现简易
  7. android tabhost --android UI 学习
  8. Android 面试之开篇
  9. Android(安卓)备忘录
  10. Android硬件之传感器