萌新入坑PHP代码审计中╭(°A°`)╮选了这个易上手CMS,费尽心思审计出了一个风趣的二阶注入,满足的睡了,第二天计划写文档的时分,居然发现……
0×00 缝隙代码
用户在发布资讯时,虽然对POST数据运用了addslashes函数,可是因为editor参数可控依旧能够刺进结构好的Payload
/user/zxsave.php 第51行:
在检查用户发布的资讯时,会查询文章id所对应的相关信息。
/zx/show.php 第36行:
会依据该资讯id,需求具有的检查信息的用户组等级(groupid)来进行判别,假如groupid不为0,而且检查资讯时需求花费积分时,那么便会调用Payif函数。
/zx/show.php 第155行:
假如用户积分剩余检查资讯的积分时,那么便会:
减去检查者对应的积分(依据cookie里边的Username参数);
添加发布者对应的积分(依据检查文章对应信息里边的editor字段);
…
/zx/show.php 第92行:
例如:
1.正常形式下:editor=admin,$jifen=10时,那么第二条查询句子就是:
update zzcms_user set totleRMB=totleRMB+10 where username = 'admin'
假如 editor=’ and groupid=(select sleep(3)) — – 时,那么第二条查询句子就是:
update zzcms_user set totleRMB=totleRMB+10 where username = '' and groupid = (select sleep(3)) -- -'
此刻我们便可依据页面所呼应的时刻,来判别查询句子是否成功了。
0×01 运用缝隙
能够看到普通用户的groupid是1。
在发布资讯是能够挑选vip用户才干检查或许高档会员检查,或许直接在BurpSuite中修正groupid为2,并设置检查积分为大于0的值:
在检查该信息时能够看到,添加了约束:
此刻将editor设置为我们的Payload:
此刻在检查资讯时便能够看到呼应时刻的反常:
我们最终传入数据库的SQL句子如下,能够看到,这样的话我们每履行一次查询句子便加不了10积分,而检查资讯却需求10积分,这样说来,履行一次Payload需求十积分,通过测验,最少也是1分,这…也太豪了。
update zzcms_user set totleRMB=totleRMB+10 where username = TEag1e” and groupid = (select sleep(3)) — -’
通过我思考后,我将and逻辑运算符替换为了or逻辑运算符,酱紫的话,便能够减10,加10了,一分钱不花了
然后说一下我遇到的坑/新GET到的细节:
MySQL中在运用or逻辑运算符时,假如前面的条件现已将数据库中的成果悉数挑选出来了,那么or后边的条件便不会在进行履行了。
例如:此刻数据库中满是groupid为1的用户
假如SQL句子是:
update zzcms_user set totleRMB=totleRMB+10 where groupid = 1 or username = (select sleep(3))
那么username后边的自查询便不会履行,而假如运用的是and逻辑运算符的话,假如and前面的条件一条数据也查询不出来时,那么and后边的子查询句子便也不会履行了。
0×02 第二天醒来
第二天,我正要写文档的时分,发现咋就失利了呢,等我回到数据库中时,发现editor字段居然设置了50个字符的约束,好惨…
虽然有些丢失,可是我并不泄气,究竟缝隙被疏忽的多了现已习惯了。。
0×03 一些小东西
上文笔者现已说过了,看积分文章时:
1.减去检查者对应的积分(依据cookie里边的Username参数);
2.添加发布者对应的积分(依据检查文章对应信息里边的editor字段)。
通过测验发现此处存在逻辑缝隙,未校验cookie里边Username参数,那么发布资讯时,将editor设置为我们自己的用户名,在检查我们结构的需求花费积分的资讯时,将cookie里边的Username设置为其他用户的用户名。
[1] [2] 黑客接单网
有(包含脚本内容)在《内存办理技能的详细完结介绍》一文中,我解说了像JavaScript这样的内存办理言语是怎么作业的,我还解说了手动内存办理怎么在C言语中作业。 了解这些后,咱们能够编写一个prot...
4.程序规划中的安全危险这样的选手一般自称“搅屎棍”~嘿。 当然我没有斥责他们的意思,竞赛便是和他人竞赛的进程,经过各种手法阻挠对手拿分我觉得也是一种才能。 可是作为主办方,咱们需求尽量让全部选手正常...
c)assert("print_r(1);print_r(2);")或assert("print_r(1);print_r(2)")都只能履行print_r(1),assert只会履行到第一个分号内的...
跟着信息化的不断发展,信息体系所承载的不仅仅是新闻发布、内容展现等传统功用,一起还承当了信息查询、订单处理、事务管理等事务,其间往往触及一些需求保密的信息,保密型web运用脚本后门应运而生,其以保密为...
deb http://dk.archive.ubuntu.com/ubuntu/ trusty main universe你乃至能够在同一个根本缓冲区上具有多个视图。 不同的视图将给你出现相同的操作下...
1.临时应对方法 let SUCC+=1Metasploit的商业版本开始提供能导致远程代码执行的漏洞利用模块cd c赌博输了十几万我该怎么办,钱能要回来吗, 由uhci_hcd驱动程序处理的数据包由...