通过镜像描述信息,知道存在sql注入的点在哪里。
通过抓包,可以看到,账号密码属于明文传输,使用万能密码进行绕过,可以正常绕过
- 放包之后,正常登陆到系统中,从此可看出此系统当前版本存在sql注入的问题
这里可以直接使用sqlmap跑,拿到数据库名,而sqlmap判断出的是一个时间注入。再次使用sqlmap跑出数据库账号密码
拿到账号密码后,使用账号密码直接连接数据库。Sqlmap在跑mysql数据库的时候,因为是盲注类型,会比较慢,我直接结束,并使用mysql一般都存在的表来进行直接查询,比如python sqlmap.py -r 01.txt -D mysql -T user -C user,password —dump —batch,能够跑出root账号和密码MD5,经常使用phpstudy的一般可能会有印象,这个MD5是默认密码root的md5值,所以相当于账号密码就是root
- 然后使用数据库账号密码进行远程登录,
- 因为是dba权限,可以直接使用sqlmap的—os-shell命令试下能不能直接拿shell,但是失败了。失败的原因可能是:
① 实际路径不对,
② 没有写入的权限
③ Secure_fire_priv可能存在值,但是实际查询后,没有值(可以进行导入导出,没有限制)
- 那么实际就只有两种情况,实际路径不对,或者当前账号对路径没有写入得权限。实际路径我们可以使用nmap扫描下当前访问端口,查看中间件为apache,然后系统是debian,然后网上查询下debian系统的网站默认路径,一般是在/var/www下,所以使用sqlmap,再次泡一下路径,最后确认的确是没有权限写入,通过mysql管理工具远程连接查询,也可以发现没有权限写入
- 那么只有其他方式再进行shell
有几种思路:
① 使用loadfile()函数直接读取系统上/tmp下的文件(因为知道flag在/tmp目录下但是不知道文件名)(如果能够读取目录,那么就能解决了)
② 拿shell方式,使用mysql管理工具,在tmp下写入文件,并使用计划任务方式对tmp下上传的文件进行执行,但是计划任务的cron目录并没有写入权限(已经尝试,行不通)
③ 读取到/etc/passwd文件,然后搜索其他账户,试着登录或者爆破,但是本靶场并没有提供远程连接的端口,而且是一个容器(docker),所以也不可行
④ 搭建了本地vulfocus,然后进入了容器后查看,发现网站目录的确没有权限,且计划任务那边也没有权限,只有/tmp目录是有权限的,但是flag是一个文件,如图,只有root才有权限写入
- 然后查看/tmp目录,发现flag是一个文件,如果使用loadfile,就必须知道文件名,文件名就是flag,那要是知道了文件名,还查询什么???????
登录网站后台后,发现根本没有上传点,只有几个注入点,但是都已经拿到后台数据库账号密码登录了,注入点就无用了
*是否存在其他方式进行拿shell呐,或者说可以读取目录下不确定名字的文件????
binaryuser
发表于 3个月前
大佬,可以具体讲解一下最终怎么获取flag吗 新手实在是没看明白
评论列表
加载数据中...