PHP代码审计 - SQL注入

SQL注入

复制代码
 正则搜索

(update|select|insert|delete).*?where.*=

示例一:

bluecms源码下载:source-trace/bluecms

以项目打开网站根目录,并以ctrl+shift+f打开全局搜索

(update|select|insert|delete).*?where.*=并开启正则匹配

最快寻找脆弱点的方法:

1、是否有可控的值

2、文件路径和文件名字猜测文件作用

3、有无过滤,或者过滤是否严格

这里就不浪费时间,直接测试ad_js.php文件内的sql注入

发现使用了自定义的getone函数,那么跳转到对应函数声明

查看getone函数

发现这里调用了类里的query函数

发现这里使用mysql_query函数,进行的sql语句,中间没有任何过滤,那么就存在sql注入

$ad_id参数来自于get传参

查看blue_ad内有7个字段

payload:1 union select 1,2,3,4,5,6,user()

发现没有回显,查看源代码

原来回显藏在html注释里面了

示例二:

emlog V6.0.0源码下载:https://soft-10-2.xiaoguaniu.com/soft/202105/Emlog_V6.0.0_XiTongZhiJia.zip?t=1731583487\&ip=112.193.34.227\&sign=25a70a465fbab4f660c316a902907b96

依旧使用正则搜索法寻找定位脆弱点,为了节约时间,直接定位漏洞文件comment.php

这里有调用一个自定义函数,看函数名应该是通过IP删除评论的意思

这里将$sql变量传入了db的query方法

发现这直到sql执行都没有过滤方法,那么存在sql注入

刚刚是通过$CACHE->updateCache(array('sta','comment'));转到执行的,这个代码文件路径:/admin/comment.php

并且要使得$action= 'delbyip'


插入调试代码 echo 'qdy';

构造发包,发现执行了调试代码,但是报错

寻找报错代码

缺少token,登录后台后复制token

发现还需要$ip参数,加入echo 调试

IP取值

构造payload

/admin/comment.php?action=delbyip&token=c0d72b51591583bca22cbc112e85b4ff&ip=127.0.0.1'+and+updatexml(1,concat(0x7e,user(),0x7e),1)--+

成功

mysql监听工具

https://codeload.github.com/cw1997/MySQL-Monitor/zip/refs/heads/master

存中...(img-oyGEHH9H-1731596090466)]

成功

mysql监听工具

https://codeload.github.com/cw1997/MySQL-Monitor/zip/refs/heads/master

相关推荐
半个西瓜.2 小时前
车联网NFC测试:NFC信号嗅探测试.
网络·安全·网络安全·车载系统
自在极意功。2 小时前
SQL查询语句深度解析:从基础到进阶,写出高效优雅的SQL!
数据库·sql
4***V2024 小时前
PHP在微服务通信中的消息队列
开发语言·微服务·php
亿坊电商4 小时前
PHP框架 vs 原生开发:移动应用后端开发实战对比!
开发语言·php
n***29326 小时前
PHP安全编程实践
开发语言·安全·php
b***74887 小时前
PHP在电子商务系统中的构建
开发语言·php
BingoGo8 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
后端·php
JaguarJack8 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
php·服务端
一起学安全技术8 小时前
C11期作业27(09.27)
网络安全
月下的郁王子9 小时前
进阶学习 PHP 中的二进制和位运算
android·学习·php