南邮ctf web部分(下)

上一部分:https://www.cnblogs.com/truthilia-12580/p/12513018.html

21.SQL注入1

http://chinalover.sinaapp.com/index.php

点source查看源码。

chrome_2020-03-13_09-44-11_thumb从数据库里面选择user和pw,然后与输入的user和pass对比,并且user要为admin才能echo flag。

这里可以把查询语句截断,不选择pw,后面对比的时候就不用与pass对比。

在用户名后面加上’) #

则查询语句变为select user from ctf where (user=’admin’) #’) and (pw=’*****’)

#后面的语句被注释,不生效。

chrome_2020-03-13_09-50-40_thumb

22.pass check

http://chinalover.sinaapp.com/web21/

chrome_2020-03-13_09-53-12_thumb

strcmp函数在比较数组时会返回null。

post一个为数组的pass。

chrome_2020-03-13_09-55-25_thumb

23.起名字真难

http://chinalover.sinaapp.com/web12/index.php

chrome_2020-03-13_11-27-32_thumb

要以get形式传输一个key,key的内容要为54975581388但是又不能全为数字。

将54975581388转换为16进制再传输。

是把这个数字作为10进制数进行转换,不是作为字符串,拿字符串转了半天才发现这个问题。

0xccccccccc。

chrome_2020-03-13_12-01-49_thumb

24.密码重置

http://nctf.nuptzj.cn/web13/index.php?user1=Y3RmdXNlcg==

chrome_2020-03-13_12-07-32_thumb

注意到题目的链接里面有一个base64加密的内容。

解密发现是ctfuser。

尝试把这段base64编码改成admin的base64编码,重置,结果error了。

chrome_2020-03-13_12-09-36_thumb

拿bp抓下包,发现除了链接之外,post的内容也包含user名。

java_2020-03-13_12-10-29_thumb

把这里改成admin再send就可以获得flag了。

java_2020-03-13_13-10-07_thumb

25.SQL Injection

f12查看源码,可以看到一段php代码。

  1 <!--
  2 #GOAL: login as admin,then get the flag;
  3 error_reporting(0);
  4 require 'db.inc.php';
  5 
  6 function clean($str){
  7 	if(get_magic_quotes_gpc()){
  8 		$str=stripslashes($str);
  9 	}
 10 	return htmlentities($str, ENT_QUOTES);
 11 }
 12 
 13 $username = @clean((string)$_GET['username']);
 14 $password = @clean((string)$_GET['password']);
 15 
 16 $query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';
 17 $result=mysql_query($query);
 18 if(!$result || mysql_num_rows($result) < 1){
 19 	die('Invalid password!');
 20 }
 21 
 22 echo $flag;
 23 -->

查询语句为SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';

select * from uses where name=\’$username\’and pass=\’$password\’

select * from uses where name=’$username’and pass=’$password’

在get_magic_quotes_gpc开启时,stripslashes会去掉字符串中的反斜杠。

htmlentities函数会编码双引号和单引号(参考链接

说明我们无法使用单引号,查询语句无法闭合。

这样我们可以利用语句中的单引号来实现闭合。

使用反斜杠使username后的单引号被转义,再注释掉password后的引号,语句闭合,再让password等于一个永真语句,用or使整条语句永真,则达成条件。

payload:?username=\&password=or 1=1 %23

26.综合题

http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/index.php

一看就知道是jsfuck了,复制丢到浏览器控制台就完事了。

chrome_2020-03-13_16-41-37_thumb

给了一个php,进去看看。

chrome_2020-03-13_16-42-38_thumb

谜样的感觉,总之tip在头部,抓包看看吧。

java_2020-03-13_16-53-19_thumb

提示是history of bash。

打开链接http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/.bash_history

 

chrome_2020-03-13_16-58-31_thumb

打开,会下载一个文件,打开来就是flag。

27.SQL注入2

和上个注入题一样,先查看源码。

chrome_2020-03-13_17-09-59_thumb

query里面存放了查询的结果,所以我们在查询结果中加上我们输入的密码的md5值就可以了,题目提示用联合查询,所以user为

‘ union select md5(123) #

pass也为123.

java_2020-03-13_17-35-01_thumb

 

28.综合题2

http://cms.nuptzj.cn/

打开来是一个留言板?

chrome_2020-03-17_11-33-01_thumb

在留言部分点击预览,弹出一个提示。

chrome_2020-03-17_11-53-20_thumb

好吧,那就不考虑xss了。

在网页底部有一个链接,点开来看看。

chrome_2020-03-17_11-55-17_thumb

稍微整理一下:

config.php 存放数据库信息

index.php 主页文件

passencode.php 加密算法库

say.php 接受处理用户请求

sm.txt cms说明文档

admin表结构

id

username

userpass

在这里我们注意到链接是这样的:

http://cms.nuptzj.cn/about.php?file=sm.txt

可以通过这个查看别的文件。

passencode:

  1 <?php function passencode($content)
  2 {
  3 	//$pass=urlencode($content); 
  4 	$array=str_split($content); $pass="";
  5 	for($i=0;$i<count($array);$i++)
  6 	{
  7 		if($pass!="")
  8 		{ $pass=$pass."".(string)ord($array[$i]); }
  9 		else
 10 		{ $pass=(string)ord($array[$i]); }
 11  	}
 12  return $pass; }
 13  ?>

其他的似乎没有什么用。

在留言处寻找可用的信息。

在留言搜索处搜索,在链接中有so.php

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>搜索留言</title> </head> <body> <center> <div id="say" name="say" align="left" style="width:1024px">
  2 <?php
  3 if($_SERVER['HTTP_USER_AGENT']!="Xlcteam Browser")
  4 { echo '万恶滴黑阔,本功能只有用本公司开发的浏览器才可以用喔~';
  5 exit(); }
  6  $id=$_POST['soid'];
  7  include 'config.php';
  8  include 'antiinject.php';
  9  include 'antixss.php';
 10  $id=antiinject($id);
 11  $con = mysql_connect($db_address,$db_user,$db_pass) or die("不能连接到数据库!!".mysql_error());
 12 mysql_select_db($db_name,$con);
 13  $id=mysql_real_escape_string($id);
 14  $result=mysql_query("SELECT * FROM `message` WHERE display=1 AND id=$id"); $rs=mysql_fetch_array($result);
 15  echo htmlspecialchars($rs['nice']).':<br />&nbsp;&nbsp;&nbsp;&nbsp;'.antixss($rs['say']).'<br />'; mysql_free_result($result); mysql_free_result($file); mysql_close($con); ?>
 16  </div>
 17  </center>
 18  </body>
 19  </html>

其中可以看到antiinject.php和antixss.php

antiinject.php

  1 <?php function antiinject($content)
  2 { $keyword=array("select","union","and","from",'',"'",";",'"',"char","or","count","master","name","pass","admin","+","-","order","="); $info=strtolower($content);
  3 for($i=0;$i<=count($keyword);$i++)
  4 { $info=str_replace($keyword[$i], '',$info); }
  5 return $info; }
  6 ?>

最后是about.php

  1 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2  <?php
  3 $file=$_GET['file'];
  4 if($file=="" || strstr($file,'config.php'))
  5 { echo "file参数不能为空!"; exit(); }
  6 else{ $cut=strchr($file,"loginxlcteam");
  7 if($cut==false)
  8 { $data=file_get_contents($file); $date=htmlspecialchars($data); echo $date; }
  9 else
 10 { echo "<script>alert('敏感目录,禁止查看!但是。。。')</script>"; } }

可以看到loginxlcteam。

chrome_2020-03-17_12-37-10_thumb

看来是通过sql注入来获得admin的密码来登陆。

在搜索处注入。

首先要将user-agent改为Xlcteam Browser。

然后绕过antiinject,用双写绕过和/**/代表空格。

java_2020-03-17_13-18-17_thumb

102 117 99 107 114 117 110 116 117

fuckruntu

去后台登陆。

chrome_2020-03-17_13-21-24_thumb

查看小马的源码。

chrome_2020-03-17_14-21-14_thumb

后面不大会做了,看了大佬的wp。

chrome_2020-03-17_14-25-10_thumb

更改网站编码。

chrome_2020-03-17_14-25-48_thumb

用先前的办法看flag。

29.密码重置2

http://nctf.nuptzj.cn/web14/index.php

chrome_2020-03-17_17-56-41_thumb

查看源码。

chrome_2020-03-17_17-57-22_thumb

获得邮箱。

查看备份文件。

打开.index.php.swp,啥都没有。

再看一边源码,看到了submit.php。

打开.submit.php.swp看看。

  1 
  2 ........这一行是省略的代码........
  3 
  4 /*
  5 如果登录邮箱地址不是管理员则 die()
  6 数据库结构
  7 
  8 --
  9 -- 表的结构 `user`
 10 --
 11 
 12 CREATE TABLE IF NOT EXISTS `user` (
 13   `id` int(11) NOT NULL AUTO_INCREMENT,
 14   `username` varchar(255) NOT NULL,
 15   `email` varchar(255) NOT NULL,
 16   `token` int(255) NOT NULL DEFAULT '0',
 17   PRIMARY KEY (`id`)
 18 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
 19 
 20 --
 21 -- 转存表中的数据 `user`
 22 --
 23 
 24 INSERT INTO `user` (`id`, `username`, `email`, `token`) VALUES
 25 (1, '****不可见***', '***不可见***', 0);
 26 */
 27 
 28 
 29 ........这一行是省略的代码........
 30 
 31 if(!empty($token)&&!empty($emailAddress)){
 32 	if(strlen($token)!=10) die('fail');
 33 	if($token!='0') die('fail');
 34 	$sql = "SELECT count(*) as num from `user` where token='$token' AND email='$emailAddress'";
 35 	$r = mysql_query($sql) or die('db error');
 36 	$r = mysql_fetch_assoc($r);
 37 	$r = $r['num'];
 38 	if($r>0){
 39 		echo $flag;
 40 	}else{
 41 		echo "失败了呀";
 42 	}
 43 }
 44 
 45 

token的长度为10,且token等于0.

那么让token为0000000000.

提交,获得flag。

看到大佬的wp说0e00000000也行。

30.file_get_content

http://chinalover.sinaapp.com/web23/

打开啥都没有?

看看源码。

<!--$file = $_GET['file'];

if(@file_get_contents($file) == "meizijiu"){

echo $nctf;

}—>

看来要用到php伪协议。

?file=php://input

再post meizijiu

31.变量覆盖

http://chinalover.sinaapp.com/web24/

网页里面啥都没有,看看源码。

  1 <!--foreach($_GET as $key => $value){
  2         $$key = $value;
  3 }
  4 if($name == "meizijiu233"){
  5     echo $flag;
  6 }-->

foreach函数遍历数组,把键值存储到$key里面,再让$键值=value的值。

题目的要求是$name=“meizijiu233”

用get传值name=meizijiu233就可以了。

chrome_2020-03-17_19-45-55_thumb

32.注意!!

看题目啦。

33.HateIT

34.Anonymous

题目又不见了哒。

 

结束啦~给自己撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

posted @ 2020-03-17 20:25  Chiluoyi  阅读(659)  评论(0编辑  收藏  举报