自学内容网 自学内容网

2025.1.17——三、SQLi regexp正则表达式|

题目来源:buuctf [NCTF2019]SQLi1

目录

一、打开靶机,整理信息

二、解题思路

step 1:正常注入

step 2:弄清关键字黑名单

1.目录扫描

2.bp爆破

step 3:根据过滤名单构造payload

step 4:regexp正则注入

三、小结


一、打开靶机,整理信息

        很典型的sql注入类型题目,并且是字符型注入

二、解题思路

step 1:正常注入

        尝试注入发现都显示hacker!!!说明被过滤了

step 2:弄清关键字黑名单

1.目录扫描

(dirmap安装失败,还在研究)看其他wp得到robots.txt中藏着hint.txt,即过滤字符的表

        得到两个信息:①用户名是admin,只要密码对了,就能拿到flag了;②关键字基本上都被过滤掉了,所以万能密码、时间盲注、联合注入、order by等语句都没用,并且大小写也无法绕过

2.bp爆破

        得知基本上都被过滤了,只有regexp和 \ 幸存。所以/**/可替换空格,末尾多出来的  '可以用%00截断。

step 3:根据过滤名单构造payload

        由题可得sql语句:select * from users where username='①' and passwd='②'

        我们传参位置为①和②,利用转义字符 \ 将①后面的单引号闭合掉,然后再传passwd参数,即select * from users where username='\' and passwd='②'

step 4:regexp正则注入

regexp正则注入

REGEXP注入与LIKE注入学习笔记-CSDN博客

        所以核心语句在②上,用regexp查询passwd^匹配字符串开头,%00截断后面内容,但不能在输入框提交,会被url编码然后拦截的,在bp中提交尝试用payload1:||/**/passwd/**/regexp/**/"^a";%00,发现响应里有welcome.php

        感觉接近了

        可以从第一个字符猜测password值,知道welcom.php出现在响应报文中,可以使用脚本:每周一题(四) | Wei's blog 脚本见链接(我自己还写不出来脚本)

        得到password:you_will_never_know7788990

        在输入框输入任意用户名和password即可得到flag

三、小结

        好痛苦的一道题,也有可能是在痛苦时间段做的。

1.目录扫描是web题目中常用手段,常用工具有dirsearch、dirmap

2.过滤的关键字可以用字典爆破,也可以寻找hint.txt,被过滤的关键字代表一些注入姿势的禁止,可以绕过,也可以换其他方式注入

3.regexp正则注入是新知识点

4.python脚本很重要,不得不会

5.题目一般不会给没用的信息,比如本题提示则为字符型注入


原文地址:https://blog.csdn.net/2402_87387800/article/details/145215293

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!