通达OA SQL盲注利用:多线程+二分法提升效率

需积分: 0 3 下载量 56 浏览量 更新于2024-08-05 收藏 1.53MB PDF 举报
"这篇文档主要介绍了如何利用多线程和二分法来提高SQL盲注的效率,通过在Poc脚本中应用这些技术,针对通达OA系统2017版本的一个SQL注入漏洞进行利用,以获取管理员的sessionid并登陆后台。文章强调了使用者对由此产生的任何后果自负其责,并指出雷神众测对文章具有修改和解释权。" 在网络安全领域,SQL注入是一种常见的攻击手段,攻击者通过构造特殊的输入,使得应用程序在执行SQL查询时误将这些输入作为代码的一部分,从而获取、修改、删除数据库中的敏感信息,甚至控制整个数据库系统。在这个案例中,我们关注的是一个MySQL布尔型盲注漏洞。 通达OA(TongDa Office Automation)是一款企业级的办公自动化系统,而该漏洞存在于其2017版本的一个接口中。攻击者可以通过发送特定的POST请求来触发这个漏洞。提供的payload展示了如何构造一个利用该漏洞的查询: ```http POST http://127.0.0.1:8088//general/document/index.php/recv/register/insert HTTP/1.1 Host: 127.0.0.1:8088 User-Agent: Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36 Accept-Encoding: gzip, deflate Accept: */* Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 76 title)values("'"^exp(if(ascii(substr(user(),1,1))%3d114,1,710)))#=1&_SERVER= ``` 这个payload的关键部分是`exp(if(ascii(substr(user(),1,1))=114,1,710))`。它利用了MySQL的`exp()`函数,如果`user()`函数返回的用户名的第一个字符的ASCII码等于114(即字母'r'的ASCII码),则`exp()`函数会返回1,导致查询的结果大于709,这会导致服务器返回一个302状态码。反之,如果条件不成立,服务器将返回500状态码。通过观察服务器的响应状态码,攻击者可以判断ASCII码是否等于预期值。 为了提高探测速度,攻击者在Poc脚本中引入了多线程和二分法。多线程可以同时发起多个请求,大大加快了对数据库字符的遍历速度。二分法则是通过不断缩小可能的字符范围,减少尝试次数,从而显著提升了效率。例如,通过二分法,攻击者可以快速定位到字符的正确位置,而不是逐个字符地进行试探。 这个例子展示了在安全测试中如何巧妙地结合多线程和二分法来高效利用SQL盲注漏洞,同时也提醒了我们在开发和维护软件时,必须对SQL注入这类常见漏洞保持警惕,采取有效的防护措施,如参数化查询、输入验证、错误处理策略等,以保障系统的安全性。