常熟理工php实验三_西普学院(实验吧)Web题解

1、你能跨过去吗?

Key Words:XSS

根据提示考察XSS,看给出的链接需要的是编解码

http://www.test.com/NodeMore.jsp?id=672613&page=2&pageCounter=32&undefined&callback=%2b/v%2b%20%2bADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAGsAZQB5ADoALwAlAG4AcwBmAG8AYwB1AHMAWABTAFMAdABlAHMAdAAlAC8AIgApADwALwBzAGMAcgBpAHAAdAA%2bAC0-&_=1302746925413

先unescape解码

解码后代码使用UTF7解码

2、进来就给你想要的

这个题目主要是找后台地址,先在URL中尝试常用的后台地址,得到如下提示:

将admin 改成system,成功

3、请输入密码

查看源代码,发现是本地JS验证,使用Firefox中firebug查看a的值

输入得到key的值

4、猫捉老鼠

catch!catch!catch!嘿嘿,不多说了,再说剧透了

根据提示,需要抓包,在Response中看到content-row内容

输入后显示key值

5、forbidden

根据访问提示:

Make sure you are in HongKong

需要抓包修改,修改Accept-Language值,提价返回Key值

6、头有点大

根据访问提示

Please make sure you have installed .net framework 9.9!

Make sure you are in the region of England and browsing this site with Internet Explorer

需要修改headers,修改的地方有三个,如下图修改完后,返回Key值

7、仔细点就行了

是个asp的代码审计,查看源代码view the source code

发现程序中存在sql注入点

sql = “select * from bdmin where name='” & name & “‘”

burpsuite抓包后,修改post数据,如下

返回key值

8、貌似有点难

根据PHP源代码

function GetIP(){

if(!empty($_SERVER["HTTP_CLIENT_IP"]))

$cip = $_SERVER["HTTP_CLIENT_IP"];

else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))

$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];

else if(!empty($_SERVER["REMOTE_ADDR"]))

$cip = $_SERVER["REMOTE_ADDR"];

else

$cip = "0.0.0.0";

return $cip;

}

$GetIPs = GetIP();

if ($GetIPs=="1.1.1.1"){

echo "Great! Key is *********";

}

else{

echo "错误!你的IP不在访问列表之内!";

}

?>

需要修改客户端ip地址,使用BurpSuite抓包修改headers数据

(1)修改client-ip的值,成功

(2)修改x-forwarded-for的值,成功

(3)修改remote-addr的值,失败。

对于client-ip,x-forwarded-for的值都可以通过客户端进行修改,也就是可以挂代理修改,而remote-addr的值 是直接读取的客户端机器值,客户端修改是没用的,服务器获取的值不是headers中的值

9、这个看起来有点简单

根据URL测试,存在sql注入漏洞,使用sqlmap或手工注入都可以,获得Key的值

(1)sqlmap

(2)手工注入

10、这新闻不新

搜索功能,测试发现有搜索型注入漏洞,使用sqlmap进行post型注入

sqlmap -u “http://www.shiyanbar.com/ctf/examctfdetail/35″ –data=”title=1”

最后跑出的结果如下

11、程序员的问题

根据源代码提示,查看index.txt文件,分析是服务端的处理代码

在代码中发现sql注入点

if($_POST[user] && $_POST[pass]) {

$conn = mysql_connect("*******", "****", "****");

mysql_select_db("****") 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 user from php where (user='$user') and (pw='$pass')";

$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['user']=="admin") {

echo "

Logged in! Key: ***********

";

}

if($row['user'] != "admin") {

echo("

You are not admin!

");

}

}

?>

我们可以构造如下username的值

Admin’)#

Admin’)– (注意最后有个空格)

实现突破,返回key值

12、PHP大法

根据提示,查看index.php.txt文件,是一段php代码

if(eregi("hackerDJ",$_GET[id])) {

echo("

not allowed!

");

exit();

}

$_GET[id] = urldecode($_GET[id]);

if($_GET[id] == "hackerDJ")

{

echo "

Access granted!

";

echo "

flag: *****************}

";

}

?>

分析代码发现我们需要构造id这个参数,并让id=hackerDJ

直接赋值是不行的,需要进行URL编码,并且要经过两次URL编码,可以对hackerDJ中全部或部分值进行两次URL编码。

用J这个字母进行两次URL编码,构造

id=hackerD%25%34%61

提交后返回key的值

13、WTF这是什么鬼东西?

这是JSfuck编码,直接在浏览器console中复制代码运行就可以跑出结果

14、程序逻辑问题

根据提示来到Index.txt文件,分析代码,找到逻辑设计缺陷处,具体的缺陷逻辑可以参考以下链接

程序逻辑如下:

(1)用户输入登录名、密码

(2)程序将输入的密码进行Md5加密

(3)根据用户输入的用户名查找数据库中的相应密码

(4)输入的密码(md5加密后)跟数据库中查询的密码进行比较,如果相同,则登录成功

缺陷在于用户可以自己控制username的输入,如果在输入username时控制了相应的password的值,然后跟输入的password值比较,只要相同就可以验证登录成功

所以构造如下输入(测试发现md5需要32位,16位会出错)

Username:’and 1=2 union select ‘21232f297a57a5a743894a0e4a801fc3’#

Password:admin

提交后返回key值

15、NSCTF web200

逆向加密算法的题目,根据给出的加密PHP源代码

写出逆向算法如下:

$str = "a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

$s3 = base64_decode(strrev(str_rot13($str)));

function decode($str){

$su = '';

for($i=0;$i

$m = substr($str,$i,1);

$j = ord($m)-1;

$s1 = chr($j);

$su = $su.$s1;

}

return $su;

}

echo strrev(decode($s3));

?>

运行后得到flag的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值