7.1and7.8

web5

1.i春秋 文件包含

REQUEST 接受数据,先传个?path=flag.php 看看能不能有什么结果,没得

查了以下发现 allow_url_include打开,即可以使用php://input用包含post中的代码。

上传<?php echo 'ls' ;?>

打开第一个文件即得flag。

2.文件上传

打开发现直接可以上传文件,写个一句话往上传试试,类型不允许。

上传图片试试,

成功,

抓包试试

改下类型,1.php上传成功。

菜刀连接发现没有什么可用的,看了眼wp发现有一个ctf.sql,但我那个没有...

这个大概要连接数据库就能看到flag了。

3.sql注入。

打开题告诉说flag在数据库里,测试存在注入点。

判断字段,报错了,猜测过滤了关键字,

尝试发现只有<>回显正确,order by判断字段为3

?id=1%20union%20sele<>ct%201,2,3,发现显示位

查看数据库,

接下来就常规操作,查表

查flag字段即可。

4.i春秋登陆题。

打开网页,查看源码,最先发现test1  test1 

试试可以登进去。但没有结果,抓包看看。

 

发现有个show 值为0,这里在左边改为1试试,

返回了源码

 

发现需要让 $login['user'] === 'ichunqiu',输出flag,

这里用php解密一下,将结果添加到cookie中的token中然后发过去即可得到flag。

5.ichun qiu   test

打开题目发现为cms,百度了一下有现有的漏洞可直接利用

/search.php?searchtype=5&tid=&area=eval($_POST[1])

上传后用菜刀连接,

发现数据库的名称以及账号密码,

连接数据库,

即得fiag。

6.shiyanba sql2

题目提示过滤,

试试几个基本字符。

发现空格和select被过滤了,尝试sel<>ect,不行,而且发现(也没得了。

这里查了下用/**/select/**/可以绕过,但是不能用(就没办法查数据库这些

查一下全部表名了,

'union/*!select*/table_name%0afrom%0ainformation_schema.tables%23

查看字段,

但其实这个最开始就可以猜一猜flag这个表了,直接碰运气也是可以的...

7.shiyianba md5守株待兔

一道脑洞题,

给了一个系统的密钥和自己的密钥,而且每刷新一次系统的密钥就会变,

用MD5解密发现是越来越大的,推测是根据时间改的,

网上安利了师傅的脚本,

大概理解着敲了下,

跑出flag,

8.shiyanba  web200

打开题目,观察应该是代码审计了。

看一下函数意义,

strrev是一个将字符串进行翻转的函数。

substr是一个取字符串子串的函数,其用法为strsub(str, start, length),第一个参数为字符串,第二个参数为起始位置,第三个参数为子串长度,返回的结果就是str字符串从start这个位置开始的长度为length的子串。

ord函数的参数为字符串,此函数将返回字符串第一个字符的Acsii码。

str_rot13:如名,对字符串参数进行ROT13编码,ROT13是它自己本身的逆反;也就是说,要还原ROT13,套用加密同样的算法即可得。

按顺序读一下代码,首先反转字符串,再把反转后的每个字符加1,再base64编码,反转,root13编码,

这里返回去就对了,

 

得到flag

 

9.shiyanba 程序逻辑

进入发现是一个登陆框,看源代码发现

打开发现源码。(截取)

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]);

$sql = "select pw from php where user='$user'";
$query = mysql_query($sql);
if (!$query) {
	printf("Error: %s\n", mysql_error($conn));
	exit();
}
$row = mysql_fetch_array($query, MYSQL_ASSOC);
//echo $row["pw"];
  
  if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {
	echo "<p>Logged in! Key:************** </p>";
}
else {
    echo("<p>Log in failure!</p>");
	
  }

可以发现user存在单引号注入,但密码稍微复杂,需满足($row[pw]) && (!strcasecmp($pass, $row[pw])),

构造payload, user='union select md5(1)#&pass=1 post提交即可。

10.shiyanba 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>';}
?>
读一下输出flag的条件,首先要传入name和password,且不能相等。只有当(sha1($_GET['name']) === sha1($_GET['password']),输出flag

sha1()函数默认的传入参数类型是字符串型,可以传入其他类型,使其返回值为false。如数组类型。

用数组传,

?name[]=a&password[]=b 即得到flag。

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值