记一次注册功能处Mysql手工报错注入
知识点:报错注入是使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息,比如select/insert/update/delete都可以使用报错来获取信息,报错注入的使用前提条件,是后台没有屏蔽数据库的报错信息,在语法发生错误的时候会显示在客户前端页面。
/////////分////////////割/////////\\\\\\\\\\\线\\\\\\\\\\\\\\\\\\\\\
安卓app除了反编译apk外,各功能点也有几率存在漏洞,甚至攻防演练的时候也可以从app资产寻找突破口。
在一次项目中遇到安卓app
尝试在其的注册处、查看审核进度处进行sql注入,
随意地输入手机号和验证码,
点击立即注册功能处抓包,
在mobile参数处使用单引号破坏语句闭合
报错,判断有注入漏洞
此时单纯的我直接用了sqlmap对它一顿操作,
于是乎被封了ip,判断有waf拦截恶意流量。
换了个ip尝试手工注入,发现注入点检测空格报500错误,于是用+代替空格。
?mobile=152xxxxxxxxx'and+1=1+
报错,语句也展现出来。这无疑给作为菜狗的我提供了很好的锻炼学习机会。
划红线这段是用来计算当前时间的,可以忽略,所以这里应该是我的单引号没闭合正确。
试试'and/**/'1'='1
(这时候其实我等了半小时,因为换了ip还是不能访问,瑟瑟发抖以为把网站搞崩了,也或许只是请求太多服务器那边撑不住。。所以还是少用工具的好)
网站恢复后使用'or/**/'1'='1试试
响应包↓
尝试'and/**/'1'='2
尝试'or/**/'1'='2
这个时候判断可以尝试报错注入
掏出公司大佬给的mysql手工注入学习笔记直接复制语句粘贴上去看看效果(感谢公司大佬,每次遇到mysql手工注入我都会掏出这本“秘籍”来CV一下)
报错注入是使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息,比如select/insert/update/delete都可以使用报错来获取信息,报错注入的使用前提条件,是后台没有屏蔽数据库的报错信息,在语法发生错误的时候会显示在客户前端页面。
常用的报错函数:
updatexml():该函数是MYSQL对XML文档数据进行查询和修改的XPATH函数,作用是(查找并替换XML文档中符合条件的节点的值)
使用语法如下:
updatexml (xml_document, XPathstring,new_value)
* 第一个参数:fiedname是String格式,为表中的字段名
* 第二个参数:XPathstring(Xpath格式的字符串)
* 第三个参数:new_value,String格式,替换查找到的符合条件的
> Xpath定位必须是有效的,否则会发送错误
kobe' and updatexml(1,version(),0)# //爆版本号,显示可能不够全面可使用concat拼接上~(0x7e)
kobe' and updatexml(1,concat(0x7e,version()),1)# //爆版本号
kobe' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database())),1)# //爆表
于是乎复制粘贴暴出版本号:
version换成database查询数据库名
点到为止,写报告。
如果是在攻防演练中可以尝试进一步利用,
配合其他漏洞(或工具)getshell。
日常给大家表演个傻瓜瓜在线治疗低血压: